3143 二叉樹的序遍歷
阿新 • • 發佈:2017-06-22
namespace 接下來 esp pos oid 節點 post truct 數據
題目描述 Description
求一棵二叉樹的前序遍歷,中序遍歷和後序遍歷
輸入描述 Input Description第一行一個整數n,表示這棵樹的節點個數。
接下來n行每行2個整數L和R。第i行的兩個整數Li和Ri代表編號為i的節點的左兒子編號和右兒子編號。
輸出描述 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
數據範圍及提示 Data Size & Hintn <= 16
#include<cstdio> #include<algorithm> using namespace std; struct Node{int No,L,R;}a[1000]; void pre_DFS(int i){ printf("%d ",i); if(a[i].L)pre_DFS(a[i].L); if(a[i].R)pre_DFS(a[i].R); } void in_DFS(int i){ if(a[i].L)in_DFS(a[i].L); printf("%d ",i); if(a[i].R)in_DFS(a[i].R); } void post_DFS(int i){ if(a[i].L)post_DFS(a[i].L); if(a[i].R)post_DFS(a[i].R); printf("%d ",i); } int main(){ int n,i; scanf("%d",&n); for(i=1;i<=n;i++){a[i].No=i;scanf("%d%d",&a[i].L,&a[i].R);} pre_DFS(1); puts(""); in_DFS(1); puts(""); post_DFS(1); puts(""); return 0; }
3143 二叉樹的序遍歷