从键盘输入树的数据,从显示器上输出树:
要从键盘输入树的数据并输出到显示器上,可以使用递归的方式构建树,并使用中序遍历打印树的节点值。
下面是一个示例代码:++#include <iostream>struct Node { int data; Node* left; Node* right; Node(int value) : data(value), left(nullptr), right(nullptr) {}};Node* createTree() { int data; std::cout << "请输入节点值(-1表示空节点):"; std::cin >> data; if (data == -1) { return nullptr; } Node* newNode = new Node(data); std::cout << "输入节点 " << data << " 的左子树:" << std::endl; newNode->left = createTree(); std::cout << "输入节点 " << data << " 的右子树:" << std::endl; newNode->right = createTree(); return newNode;}void inOrderTraversal(Node* root) { if (root == nullptr) { return; } inOrderTraversal(root->left); std::cout << root->data << " "; inOrderTraversal(root->right);}int main() { Node* root = createTree(); std::cout << "树的中序遍历结果为:"; inOrderTraversal(root); return 0;}
运行以上代码,你可以按照提示依次输入树的节点值。输入完成后,程序会递归构建树,并将树的中序遍历结果输出到显示器上。
从磁盘文件读取数据建立树,将树的数据输出到磁盘文件中:
要从磁盘文件读取数据建立树,并将树的数据输出到磁盘文件中,可以使用文件输入/输出流进行操作。
下面是一个示例代码:++#include <iostream>#include <fstream>struct Node { int data; Node* left; Node* right; Node(int value) : data(value), left(nullptr), right(nullptr) {}};Node* createTreeFromFile(std::ifstream& inputFile) { int data; inputFile >> data; if (data == -1) { return nullptr; } Node* newNode = new Node(data); newNode->left = createTreeFromFile(inputFile); newNode->right = createTreeFromFile(inputFile); return newNode;}void inOrderTraversal(Node* root, std::ofstream& outputFile) { if (root == nullptr) { return; } inOrderTraversal(root->left, outputFile); outputFile << root->data << " "; inOrderTraversal(root->right, outputFile);}void TreeToFile(const char* filename) { std::ifstream inputFile(filename); Node* root = createTreeFromFile(inputFile); inputFile.close(); std::ofstream outputFile("output.txt"); inOrderTraversal(root, outputFile); outputFile.close();}int main() { TreeToFile("input.txt"); return 0;}
在上述代码中,我们假设从名为input.txt的文件中读取树的数据。文件中的数据应按照先序遍历的顺序排列,其中空节点用-1表示。
程序会读取文件中的数据,并递归构建树。然后,它将树的中序遍历结果输出到名为output.txt的文件中。
希望这些代码能够帮助你理解如何创建和输出树。如果有其他问题,请随时提问!
球一个最佳答案谢谢啦!这对我非常重要! |