以二叉链表表示二叉树,建立一棵二叉树 输出二叉树的后序遍历结果
时间: 2023-11-14 18:21:45 浏览: 114
建立一棵树的二叉树结构并且后续遍历输出程序
以下是用C++实现二叉树的建立和后序遍历的代码:
```c++
#include <iostream>
using namespace std;
// 二叉树结点结构体
struct TreeNode {
char val;
TreeNode* left;
TreeNode* right;
TreeNode(char x) : val(x), left(nullptr), right(nullptr) {}
};
// 根据输入的前序遍历字符串构建二叉树
TreeNode* buildTree() {
char c;
cin >> c;
if (c == '#') {
return nullptr;
}
TreeNode* root = new TreeNode(c);
root->left = buildTree();
root->right = buildTree();
return root;
}
// 后序遍历二叉树
void postorderTraversal(TreeNode* root) {
if (root == nullptr) {
return;
}
postorderTraversal(root->left);
postorderTraversal(root->right);
cout << root->val << " ";
}
int main() {
cout << "请输入二叉树的前序遍历序列:" << endl;
TreeNode* root = buildTree();
cout << "二叉树的后序遍历序列为:" << endl;
postorderTraversal(root);
cout << endl;
return 0;
}
```
输入格式为前序遍历字符串,其中 `#` 表示空结点。例如,下面是一棵二叉树的前序遍历序列:
```
ABD##E##CF#H##
```
它对应的二叉树如下所示:
```
A
/ \
B C
/ \ \
D E F
/
H
```
程序输出的后序遍历序列为:
```
D E B H F C A
```
阅读全文