题目描述 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;
int a[16][2];
void binaryfront(int i)
{
cout<<i<<" ";
if(a[i][0]!=0) binaryfront(a[i][0]);
if(a[i][1]!=0) binaryfront(a[i][1]);
}
void binarybehind(int i)
{
if(a[i][0]!=0) binarybehind(a[i][0]);
if(a[i][1]!=0) binarybehind(a[i][1]);
cout<<i<<" ";
}
void binarymid(int i)
{
if(a[i][0]!=0) binarymid(a[i][0]);
cout<<i<<" ";
if(a[i][1]!=0) binarymid(a[i][1]);
}
int main()
{
int n,i;
cin>>n;
for(i=1;i<n+1;i++)
{
cin>>a[i][0]>>a[i][1];
}
binaryfront(1);
cout<<endl;
binarymid(1);
cout<<endl;
binarybehind(1);
return 0;
}