C++实现树的创建和输出的完整代码 (1)从键盘输入树的数据,从显示器上输出树; (2)从磁盘文件读取数据建立树,将树的数据输出到文件中; (3)实现Tree类的成员函数:
时间: 2024-11-24 19:40:31 浏览: 6
在C++中,实现树的数据结构通常会使用递归的方式来创建节点并处理层次关系。这里是一个简单的二叉搜索树(Binary Search Tree, BST)的例子,用于演示如何完成你所描述的任务:
首先,我们定义一个基本的树节点(Node)以及BST的头节点(TreeNode):
```cpp
#include <iostream>
using namespace std;
// 定义树节点
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 树相关的类
class Tree {
private:
TreeNode* root;
public:
// 构造函数
Tree() : root(nullptr) {}
// 输入树的节点值并添加到根节点
void insert(int value) {
if (!root) {
root = new TreeNode(value);
} else {
insertRec(root, value);
}
}
// 递归插入方法
void insertRec(TreeNode* node, int value) {
if (value < node->val)
node->left = insertRec(node->left, value);
else if (value > node->val)
node->right = insertRec(node->right, value);
else
return; // 如果值已经存在,不做操作
}
// 打印树
void printInOrder() {
inOrderPrintRec(root);
cout << endl;
}
// 递归中序遍历打印
void inOrderPrintRec(TreeNode* node) {
if (node)
{
inOrderPrintRec(node->left);
cout << node->val << " ";
inOrderPrintRec(node->right);
}
}
// 从文件读取数据构建树
static Tree fromFile(const string& filename) {
Tree tree;
// ... 实现从文件读取数据并插入到树的操作
return tree;
}
// 将树写入文件
void writeToFile(const string& filename) {
ofstream file(filename);
if (file.is_open()) {
writeToFileRec(root, file);
file.close();
} else {
cerr << "Unable to open file" << endl;
}
}
// 递归写入文件的方法
void writeToFileRec(TreeNode* node, ofstream& file) const {
if (node) {
writeToFileRec(node->left, file);
file << node->val << "\n";
writeToFileRec(node->right, file);
}
}
};
```
以上代码展示了如何创建、插入和打印二叉搜索树的基本操作,以及从文件读取和写入树的功能。请注意,实际操作文件需要实现读取和解析数据的具体逻辑。
阅读全文