FDU2014第三题,给定树节点值以及左右孩子,建树。
#include<iostream>
using namespace std;
struct node{
int val,l,r,p=-1;
};
void preorder(node s[],int cur){
if(cur==-1)return;
cout<<s[cur].val<<" ";
preorder(s,s[cur].l);
preorder(s,s[cur].r);
}
void midorder(node s[],int cur){
if(cur==-1)return;
preorder(s,s[cur].l);
cout<<s[cur].val<<" ";
preorder(s,s[cur].r);
}
void postorder(node s[],int cur){
if(cur==-1)return;
preorder(s,s[cur].l);
preorder(s,s[cur].r);
cout<<s[cur].val<<" ";
}
int main(){
int n;
cin>>n;
node s[n];
int v,l,r;
for(int i=0;i<n;i++){
cin>>v>>l>>r;
s[v].val=v;
s[v].l=l;
s[v].r=r;
s[l].p=v;
s[r].p=v;
}
int root;
for(int i=0;i<n;i++){
if(s[i].p==-1){
root=i;
break;
}
}
preorder(s,root);
cout<<endl;
midorder(s,root);
cout<<endl;
postorder(s,root);
return 0;
}