一般二叉树都是通过扩展二叉树的前序序列来建立。这个题目的建立方式有点臃肿。
由于信息很冗余,题目也没有要求建立二叉链表,这儿直接用数组顺序存储就可以了。
struct node{
int left;
int right;
};
node arr[20];
int N=0;
using namespace std;
void PreOrderTraverse(int a)
{
if(a==0) return;
cout< PreOrderTraverse(arr[a].left);
PreOrderTraverse(arr[a].right);
}
void InOrderTraverse(int a)
{
if(a==0) return;
InOrderTraverse(arr[a].left);
cout< InOrderTraverse(arr[a].right);
}
void PostOrderTraverse(int a)
{
if(a==0) return;
PostOrderTraverse(arr[a].left);
PostOrderTraverse(arr[a].right);
cout<}
void main()
{
cin>>N;
for(int i=1;i<=N;++i)
{
cin>>arr[i].left>>arr[i].right;
}
PreOrderTraverse(1);
InOrderTraverse(1);
PostOrderTraverse(1);
::system("pause");
}