題目描述
在計算機科學中,二叉樹是每個結點最多有兩個子樹的有序樹。通常子樹的根被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。如下圖,每個節點有一個編號。樹的訪問方式叫做中序遍歷,方法為:首先中序遍歷左(右)子樹,再訪問根,最后中序遍歷右(左)子樹。如下圖,中序遍歷為:4、3、7、1、6、2、5、8。現在輸入一棵二叉樹(根的編號一定是1),請你輸出二叉樹的中序遍歷。

輸入輸出格式
輸入格式:
第一行,一個整數n,代表二叉樹節點個數,它的范圍在[1...10000];
第2-n+1行,每行三個整數,第一個整數代表第i個節點的編號,第二個整數左兒子的編號,第三個整數為右兒子的編號,如果沒有左或者右兒子則為0。
輸出格式:
依次輸出二叉樹中序遍歷節點。
輸入輸出樣例
輸入樣例:
8 1 3 5 2 0 0 3 4 7 4 0 0 5 6 8 6 0 2 7 0 0 8 0 0
輸出樣例:
View Code
4 3 7 1 6 2 5 8
思路:搜左,出根,搜右。
//程序名:新的C++程序 //作者: #include<iostream> #include<fstream> #include<algorithm> using namespace std; int f; struct tree { int root; int ls,rs,no; }a[10001]; void mid(int i) { if(a[i].ls)mid(a[i].ls); if(!f)cout<<i,f++; else cout<<" "<<i; if(a[i].rs)mid(a[i].rs); } int m; int main() { cin>>m; for(int i=1;i<=m;i++)cin>>a[i].no>>a[i].ls>>a[i].rs; mid(1); return 0; }
