使用二叉链表表示二叉树,采用递归的方式建立二叉树,并对二叉树进行后序遍历。
时间: 2024-01-23 22:44:56 浏览: 82
可以的,下面是代码实现:
```
#include<iostream>
using namespace std;
//定义二叉树结构体
struct TreeNode{
int val;
TreeNode *left;
TreeNode *right;
//构造函数
TreeNode(int val):val(val), left(NULL), right(NULL){}
};
//建立二叉树(递归实现)
void buildTree(TreeNode* &root){
int val;
cin >> val;
if(val == -1){ //如果输入值为-1,则表示该节点为空
root = NULL;
}
else{
root = new TreeNode(val);
buildTree(root -> left);
buildTree(root -> right);
}
}
//后序遍历(递归实现)
void postorderTraversal(TreeNode* root){
if(root == NULL){
return;
}
postorderTraversal(root -> left);
postorderTraversal(root -> right);
cout << root -> val << " ";
}
int main(){
TreeNode *root;
cout << "请输入二叉树,节点值为-1表示该节点为空:" << endl;
buildTree(root);
cout << "后序遍历结果为:" << endl;
postorderTraversal(root);
cout << endl;
return 0;
}
```
使用方法:编译运行后,在终端输入二叉树的节点值,以-1表示空节点,例如输入:1 2 -1 -1 3 -1 -1,则表示如下的二叉树:
```
1
/ \
2 3
```
程序会输出该二叉树的后序遍历结果。
阅读全文