1. 程式人生 > >4685: 二叉樹中序遍歷

4685: 二叉樹中序遍歷

輸入數據 spa clu IT med 提示 break tro font

輸入數據分為多組,第一行是測試數據的組數n,下面的n行分別代表一棵二叉樹。每棵二叉樹的結點均為正整數,數據為0代表當前結點為空,數據為-1代表二叉樹數據輸入結束,-1不作處理。二叉樹的構造按照層次順序(即第1層1個整數,第2層2個,第3層4個,第4層有8個......,如果某個結點不存在以0代替),比如輸入:

1 2 0 3 4 -1得到的二叉樹如下:

技術分享圖片

輸出

輸出每棵二叉樹的中序序列。

樣例輸入

2
1 -1
1 2 0 3 4 -1

樣例輸出

1
3 2 4 1

提示

輸出的每個節點值後有一個空格。

#include <iostream>
#include <cstring>
#include 
<algorithm> using namespace std; int a[1005]; int flag,k; int inorder(int n) { if(n>k) return 0; inorder(2*n); if(a[n]) cout<<a[n]<<" "; inorder(2*n+1); } int main() { int n,m,i,j,test; cin>>test; while(test--){ memset(a,0,sizeof
(a)); k=0; flag=1; for(;;){ cin>>m; if(m==-1) break; a[++k]=m; } inorder(1); cout<<"\n"; } }

遍歷的時候應該從1開始

4685: 二叉樹中序遍歷