题目描述 Description
求一棵二叉树的前序遍历,中序遍历和后序遍历
输入描述 Input Description
第一行一个整数n,表示这棵树的节点个数。
接下来n行每行2个整数L和R。第i行的两个整数Li和Ri代表编号为i的节点的左儿子编号和右儿子编号。
输出描述 Output Description
输出一共三行,分别为前序遍历,中序遍历和后序遍历。编号之间用空格隔开。
样例输入 Sample Input
5
2 3
4 5
0 0
0 0
0 0
样例输出 Sample Output
1 2 4 5 3
4 2 5 1 3
4 5 2 3 1
数据范围及提示 Data Size & Hint
n <= 16
#include <iostream>
using namespace std;
struct tree{
int l;
int r;
};
tree t[1000];
void findpre(int n){
if(n != 0){
cout << n << " ";
findpre(t[n].l);
findpre(t[n].r);
}
}//前序遍历
void findin(int n){
if(n != 0){
findin(t[n].l);
cout << n << " " ;
findin(t[n].r);
}
}//中序遍历
void findpos(int n){
if(n != 0){
findpos(t[n].l);
findpos(t[n].r);
cout << n << " ";
}
}//后序遍历
int main()
{
int n;
cin >> n;
for(int i=1; i <= n; ++i)
{
int L,R;
cin >> L >> R;
t[i].l=L;
t[i].r=R;
}
findpre(1);
cout << endl;
findin(1);
cout << endl;
findpos(1);
cout << endl;
}