1.codevs 3143 二叉树的序遍历
1 /*只要把输出根节点的位置调换一下就可以了*/ 2 #include<iostream> 3 using namespace std; 4 #include<cstdio> 5 #define N 20 6 struct node{ 7 int l,r; 8 }tree[N]; 9 int n; 10 int rudu[N]; 11 void pre_search(int k) 12 { 13 printf("%d ",k); 14 if(tree[k].l) pre_search(tree[k].l); 15 if(tree[k].r) pre_search(tree[k].r); 16 } 17 void mid_search(int k) 18 { 19 if(tree[k].l) mid_search(tree[k].l); 20 printf("%d ",k); 21 if(tree[k].r) mid_search(tree[k].r); 22 } 23 void tion_search(int k) 24 { 25 if(tree[k].l) tion_search(tree[k].l); 26 if(tree[k].r) tion_search(tree[k].r); 27 printf("%d ",k); 28 } 29 int main() 30 { 31 scanf("%d",&n); 32 for(int i=1;i<=n;++i) 33 { 34 scanf("%d%d",&tree[i].l,&tree[i].r); 35 rudu[tree[i].l]++;rudu[tree[i].r]++; 36 } 37 int i; 38 for(i=1;rudu[i]&&i<=n;++i); 39 pre_search(i); 40 printf(" "); 41 mid_search(i); 42 printf(" "); 43 tion_search(i); 44 return 0; 45 }