在vc++6.0中初始化一个数据元素为字符串类型的二叉树,并对其实现创建及先序、中序、后序三种遍历
时间: 2024-02-03 09:13:22 浏览: 19
在VC++6.0中,我们可以使用结构体来定义二叉树节点,然后通过指针来实现二叉树的构建和遍历。下面是一个示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
// 二叉树节点结构体
struct TreeNode {
string data; // 数据元素为字符串类型
TreeNode* left; // 左子节点指针
TreeNode* right; // 右子节点指针
TreeNode(string val) : data(val), left(nullptr), right(nullptr) {} // 节点构造函数
};
// 构建二叉树
void buildTree(TreeNode*& root) {
// 输入节点数据,输入"#"表示空节点
string val;
cin >> val;
if (val == "#") {
root = nullptr;
}
else {
root = new TreeNode(val);
buildTree(root->left);
buildTree(root->right);
}
}
// 先序遍历
void preOrder(TreeNode* root) {
if (root != nullptr) {
cout << root->data << " ";
preOrder(root->left);
preOrder(root->right);
}
}
// 中序遍历
void inOrder(TreeNode* root) {
if (root != nullptr) {
inOrder(root->left);
cout << root->data << " ";
inOrder(root->right);
}
}
// 后序遍历
void postOrder(TreeNode* root) {
if (root != nullptr) {
postOrder(root->left);
postOrder(root->right);
cout << root->data << " ";
}
}
int main() {
TreeNode* root;
cout << "请输入二叉树节点数据,输入'#'表示空节点:" << endl;
buildTree(root);
cout << "先序遍历结果:" << endl;
preOrder(root);
cout << endl << "中序遍历结果:" << endl;
inOrder(root);
cout << endl << "后序遍历结果:" << endl;
postOrder(root);
return 0;
}
```
上述代码中,我们首先定义了二叉树节点结构体 `TreeNode`,其中数据元素为字符串类型。然后,我们通过指针变量 `left` 和 `right` 来实现左右子节点的连接。在 `buildTree` 函数中,我们采用递归的方式输入节点数据并构建二叉树。在三个遍历函数中,我们分别按照先序、中序、后序的顺序输出节点数据,以实现对二叉树的遍历。