二叉樹的序遍歷


題目描述

    求一棵二叉樹的前序遍歷,中序遍歷和后序遍歷。

輸入輸出格式

輸入描述:

第一行一個整數n,表示這棵樹的節點個數。

接下來n行每行2個整數L和R。第i行的兩個整數Li和Ri代表編號為i的節點的左兒子編號和右兒子編號。

輸出描述:

輸出一共三行,分別為前序遍歷,中序遍歷和后序遍歷。編號之間用空格隔開。

輸入輸出樣例

輸入樣例#1:

5

2 3

4 5

0 0

0 0

0 0

輸出樣例#1:

1 2 4 5 3

4 2 5 1 3

4 5 2 3 1

思路

遞歸。先寫好先序,再將先序略微改動,復制粘貼三遍即可。

代碼

#include<stdio.h>
int a[100],b[100];
void A(int i)
{
printf(
"%d ",i);
if(a[i])
A(a[i]);
if(b[i])
A(b[i]);
}
void B(int i)
{
if(a[i])
B(a[i]);
printf(
"%d ",i);
if(b[i])
B(b[i]);
}
void C(int i)
{
if(a[i])
C(a[i]);
if(b[i])
C(b[i]);
printf(
"%d ",i);
}
int main()
{
int n,i;
scanf(
"%d",&n);
for(i=1;i<=n;i++)
scanf(
"%d%d",&a[i],&b[i]);
A(
1);
printf(
"\n");
B(
1);
printf(
"\n");
C(
1);
return 0;
}
View Code

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com