2016.6.12 codevs搜索练习

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 }
原文地址:https://www.cnblogs.com/c1299401227/p/5576478.html