用C++实现以下功能,建立一棵含有n个结点的二叉树,采用二叉链表存储; ⑵ 输出前序、中序、后序遍历该二叉树的遍历结果
时间: 2023-12-03 21:45:06 浏览: 110
以下是C++实现代码:
```cpp
#include <iostream>
using namespace std;
// 二叉树结点结构体
struct Node {
int val;
Node* left;
Node* right;
Node(int v) : val(v), left(nullptr), right(nullptr) {}
};
// 构建二叉树
Node* buildTree(int n) {
if (n == 0) return nullptr;
int rootVal;
cin >> rootVal; // 输入根节点的值
Node* root = new Node(rootVal);
root->left = buildTree(n/2); // 递归构建左子树
root->right = buildTree(n-n/2-1); // 递归构建右子树
return root;
}
// 前序遍历
void preOrder(Node* root) {
if (!root) return;
cout << root->val << " ";
preOrder(root->left);
preOrder(root->right);
}
// 中序遍历
void inOrder(Node* root) {
if (!root) return;
inOrder(root->left);
cout << root->val << " ";
inOrder(root->right);
}
// 后序遍历
void postOrder(Node* root) {
if (!root) return;
postOrder(root->left);
postOrder(root->right);
cout << root->val << " ";
}
int main() {
int n;
cout << "请输入二叉树的结点个数:";
cin >> n;
cout << "请按照前序遍历的顺序输入结点的值:" << endl;
Node* root = buildTree(n);
cout << "前序遍历结果为:";
preOrder(root);
cout << endl << "中序遍历结果为:";
inOrder(root);
cout << endl << "后序遍历结果为:";
postOrder(root);
cout << endl;
return 0;
}
```
这里采用递归的方式构建二叉树,每次读入根节点的值,然后递归构建左子树和右子树。前序、中序、后序遍历也采用递归的方式实现。
阅读全文