题目描述
现有一棵n个结点的二叉树(结点编号为从0
到n-1
,根结点为0
号结点),求这棵二叉树的后序遍历序列。
输入描述
第一行一个整数n(1≤n≤50),表示二叉树的结点个数;
接下来n行,每行一个结点,按顺序给出编号从0
到n-1
的结点的左子结点编号和右子结点编号,中间用空格隔开。如果不存在对应的子结点,那么用-1
表示。
输出描述
输出n个整数,表示后序遍历序列,中间用空格隔开,行末不允许有多余的空格。
输入样例
6
2 5
-1 -1
1 4
-1 -1
-1 -1
-1 3
输出样例
1 4 2 3 5 0
代码:
#include<bits/stdc++.h>
using namespace std;
vector<int> post;
struct Node{
int l,r;
}node[1005];
void postorder(int root){
if(root==-1){
return;
}
postorder(node[root].l);
postorder(node[root].r);
post.push_back(root);
}
int main(){
int n;
cin>>n;
for(int i = 0;i<n;i++){
cin>>node[i].l>>node[i].r;
}
postorder(0);
for(int i = 0;i<post.size();i++){
cout<<post[i];
if(i!=post.size()-1){
cout<<" ";
}
}
}