1樓:左清安賽辛
中序遍歷:debac
後序遍歷:dabec
推導如下:
1、從後序可知樹根為c,因為最後的節點是樹根。
2、從中序的規則可知樹根在中間,樹根的左邊是左孩子,右邊是右孩子。很明顯樹根c是沒有右孩子,只有左孩子deba。
中序遍歷:deba
後序遍歷:dabe
推出e是左子樹的根結點,並且存在左子樹d,右子樹ba,因為從中序遍歷可知e的左邊是d,右邊是ba
中序遍歷:ba
後序遍歷:ab
推出b是右子樹的根結點,並且存在右子樹,但沒有左子樹,因為從中序遍歷可知b只有右子樹,沒有左子樹。
還原二叉樹如下圖:
前序為:cedba
推導的方法只需記住下面的規則即可,然後逐步分割法,就像我上面那樣推導。拿到左右子樹反覆套用下面的遍歷規則,很快就可以還原一棵完整的樹。
1.先序遍歷:根、左、右
2.中序遍歷:左、根、右
3.後序遍歷:
左、右、根
2樓:解蕊慎水
選d首先看後續遍歷,最後的c是二叉樹的根節點,然後看中序遍歷,最後一個又是c,所以這個二叉樹根節點沒有右子樹。
c的位置得到後,再看後續遍歷,e在c前面,所以e是c的左孩子節點,e的位置得到。
然後再看中序遍歷,e前面只有一個d,所以d是e的左孩子節點,d的位置得到;剩下的b和a就在e的右子樹。
然後再看後序遍歷,dabec,d是一個葉子節點,那麼就還有一個葉子節點,那麼這個節點就一定是a,那麼b就是e的右孩子節點,最後再結合中序遍歷就可得出所表示得二叉樹。(如果這步沒看懂,可以在前面得基礎上一個一個的試,也不麻煩,就四種可能,最後只有一個是符合的)
3樓:匿名使用者
cedba,過程我要想一想,反正除了知道前序和後序,求中序,都是唯一解
4樓:
由後序(左子樹,右子樹,根節點)dabec知道根節點為c,再通過中序(左子樹,根節點,右子樹)知道右子樹為空
接著由dabe知道其根節點為e,所以在中序deba中左子樹為d右子樹為ba
再來,後序ab,中序ba,b為節點,a為右子樹前序遍歷序列為cedba
----c
---/
--e-/--\
d ----b
-------\
---------a
5樓:詹靖連依辰
前序:根左右
中序:左根右
後序:左右根
```````````````````c/e/\db
\a前序:cedba
已知二叉樹後序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是? a acbed
6樓:萢萢
選d。由後序遍歷可知c是根結點,符合條件的只有d。
二叉樹遍歷,二叉樹的遍歷到底是怎麼遍歷的啊?
中序 先遍歷左子樹 就是245組成的那棵樹 遍歷245時也是中序 就是 425 然後走根節點 1 然後遍歷右子樹 637 連起來就是4251637 這種問題。多看幾遍書就好了吧 中序是左中右順序遍歷。把每個點都看成頭結點然後左走,遇節點就遍歷左子樹,等左邊空了,就訪問當前節點的父節點,也就是中,寫下...
怎樣建立二叉樹實現二叉樹的先序中序後序和遍歷
include define n 100 typedef struct node btnode 二叉樹的建立 btnode createbintree return t 先序遍歷演算法 void preorder btnode t 中序遍歷演算法 遞迴演算法 void inorder btnode ...
建立一棵二叉樹,並對其進行遍歷(先序 中序 後序),列印輸出
只有先序遍歷,其它的可以在這個基礎上改。如果有不懂的可以hi我 include include typedef struct tnode tnode tnode tree creat tnode t return t void preorder tnode t void main 二叉樹的建立與遍歷...