采用链式存储结构建立二叉树, 并按先序输入二叉树的 节点序列。建立的二叉树如下图所示。 (2) 二叉树的建立、先序遍历、中序遍历、后序遍历均采用 递归方式实现. (3) 主函数中可设计一个选项菜单, 可选择执行建立二叉树,先序、中序、后序遍历二叉树.
时间: 2024-04-08 11:29:57 浏览: 101
建立二叉树,并对树进行操作数据结构课程设计
对于这个问题,我们可以使用链式存储结构来建立二叉树,并使用递归方式实现先序、中序和后序遍历。
首先,我们定义二叉树的节点结构如下:
```C++
struct Node {
int data;
Node* left;
Node* right;
};
```
然后,我们可以编写递归函数来建立二叉树,先序遍历二叉树,中序遍历二叉树和后序遍历二叉树。
建立二叉树的递归函数如下:
```C++
Node* createBinaryTree() {
int data;
cin >> data;
if (data == -1) { // 输入-1表示空节点
return nullptr;
}
Node* newNode = new Node();
newNode->data = data;
cout << "输入节点" << data << "的左子节点:";
newNode->left = createBinaryTree();
cout << "输入节点" << data << "的右子节点:";
newNode->right = createBinaryTree();
return newNode;
}
```
先序遍历的递归函数如下:
```C++
void preorderTraversal(Node* root) {
if (root == nullptr) {
return;
}
cout << root->data << " ";
preorderTraversal(root->left);
preorderTraversal(root->right);
}
```
中序遍历的递归函数如下:
```C++
void inorderTraversal(Node* root) {
if (root == nullptr) {
return;
}
inorderTraversal(root->left);
cout << root->data << " ";
inorderTraversal(root->right);
}
```
后序遍历的递归函数如下:
```C++
void postorderTraversal(Node* root) {
if (root == nullptr) {
return;
}
postorderTraversal(root->left);
postorderTraversal(root->right);
cout << root->data << " ";
}
```
在主函数中,我们可以设计一个选项菜单,让用户选择执行建立二叉树,先序、中序、后序遍历二叉树的操作。
```C++
int main() {
Node* root = nullptr;
int choice;
do {
cout << "请选择操作:" << endl;
cout << "1. 建立二叉树" << endl;
cout << "2. 先序遍历二叉树" << endl;
cout << "3. 中序遍历二叉树" << endl;
cout << "4. 后序遍历二叉树" << endl;
cout << "0. 退出" << endl;
cout << "输入你的选择:";
cin >> choice;
switch (choice) {
case 1:
cout << "请输入先序序列建立二叉树:" << endl;
root = createBinaryTree();
break;
case 2:
cout << "先序遍历结果:" << endl;
preorderTraversal(root);
cout << endl;
break;
case 3:
cout << "中序遍历结果:" << endl;
inorderTraversal(root);
cout << endl;
break;
case 4:
cout << "后序遍历结果:" << endl;
postorderTraversal(root);
cout << endl;
break;
case 0:
cout << "退出程序" << endl;
break;
default:
cout << "无效的选择" << endl;
break;
}
} while (choice != 0);
return 0;
}
```
这样,用户可以通过选择操作来建立二叉树,以及执行先序、中序和后序遍历二叉树的操作。
阅读全文