二叉樹:
每個結點至多只有二棵子樹(不存在度大於
2的結點
),二叉樹的子樹有左右之分,次序不能顛倒。
先序遍歷:
先訪問根結點,
然後先序遍歷左子樹,最後
再先序遍歷右子樹
。中序遍歷:
先中序遍歷左子樹,然後訪問根結點,最後再中序遍歷右子樹
。後序遍歷:
先後序遍歷左子樹,然後後序遍歷右子樹,最後再訪問根結點
。1.快速寫出先序遍歷。
如下圖:
先看第一層,從上到下為:1 2 4
再看第二層,從上到下為:5
最後看第三層:從上到下為:3 6
則結合起來,先序遍歷為:1 2 4 5 3 6
2.快速寫出後序遍歷。
如下圖:
先看第一層,從上到下為:1 3
再看第二層,從上到下為:6
再看第三層:從上到下為:2 5
最後看第四層,從上到下為:4
先結合起來,為:1 3 6 2 5 4 ,再倒著輸出則為後序遍歷的結果:
4 5 2 6 3 1
3.快速寫中序遍歷。
如下圖:
中序就垂直投影就好了。則中序遍歷為:4 2 5 1 6 3
先序中序重建二叉樹
includeusing namespace std vectorpre,in int p typedef struct node vectorpost int rec int l,int r 通過前序和後序得到樹 int main for int i 0 i tem in.push back te...
先序中序轉二叉樹
在紙上計算一下他們轉的過程就很容易發現規律 寫程式更簡單,只需要計算出每個子樹的起始位置 計算的時候使用靜態鍊錶更為方便 include include include include include using namespace std struct node vector int in,pre...
二叉樹 先序 中序 後序
同學整理的,順便傳上分享下 一,已知先序和中序 求後序 1 include2 include3 include4 using namespace std 5char s1 10 s2 10 ans 10 6 int o 0 7 void tree int n char s1 char s2 char...