二叉树的序遍历
時間限制: 1 s?空間限制: 32000 KB?題目等級 : 白銀 Silver 題目描述?Description
求一棵二叉樹的前序遍歷,中序遍歷和后序遍歷
輸入描述?Input Description第一行一個整數(shù)n,表示這棵樹的節(jié)點個數(shù)。
接下來n行每行2個整數(shù)L和R。第i行的兩個整數(shù)Li和Ri代表編號為i的節(jié)點的左兒子編號和右兒子編號。
輸出描述?Output Description輸出一共三行,分別為前序遍歷,中序遍歷和后序遍歷。編號之間用空格隔開。
樣例輸入?Sample Input5
2 3
4 5
0 0
0 0
0 0
樣例輸出?Sample Output1 2 4 5 3
4 2 5 1 3
4 5 2 3 1
數(shù)據(jù)范圍及提示?Data Size & Hintn <= 16
代碼實現(xiàn):
1 #include<cstdio> 2 int n,a,b,tr[60],v[60]; 3 inline void xx(int x){if(!tr[x]) return;printf("%d ",tr[x]);xx(x*2);xx(x*2+1);} 4 inline void zx(int x){if(!tr[x]) return;zx(x*2);printf("%d ",tr[x]);zx(x*2+1);} 5 inline void hx(int x){if(!tr[x]) return;hx(x*2);hx(x*2+1);printf("%d ",tr[x]);} 6 int main(){ 7 scanf("%d",&n);tr[1]=v[1]=1; 8 for(int i=1;i<=n;i++){ 9 scanf("%d%d",&a,&b); 10 tr[v[i]*2]=a;tr[v[i]*2+1]=b; 11 v[a]=v[i]*2;v[b]=v[i]*2+1; 12 } 13 xx(1);printf("\n"); 14 zx(1);printf("\n"); 15 hx(1);printf("\n"); 16 return 0; 17 }。。。
轉(zhuǎn)載于:https://www.cnblogs.com/J-william/p/6160319.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
- 上一篇: 出厂预装HarmonyOS 3!华为Ma
- 下一篇: 世界首富贝索斯、比尔盖茨等去全球最大岛寻