二叉樹的序列

 

先序: 根節點、左子樹、右子樹 
中序:左子樹、根節點、右子樹
後序:左子樹、右子樹、根節點
要理解清楚是子樹,不是孩子。。。

如上圖根節點爲A,那麼{B、D、E、H}爲左子樹,而{C、F、G、I、J}組成其右子樹。再深刻A的左子樹,它也是一棵二叉樹,根節點爲B,左子樹爲{D},右子樹爲{E、H}。依此類推。。

先序:A、B、D、E、H、C、F、G、I、J
中序:D、B、H、E、A、F、C、I、G、J
後序:D、H、E、B、F、I、J、G、C、A



今天數據結構的考試有這個題,作了很久,下來後,我好好地在網上查了一下,並結合我本身的理解,總結出來了一個比較好理解的方法。這個方法能夠說作起這樣的題又快又準。
 (歸納爲一個口訣:先序放中間,中序分兩邊)
 
 基本思想就是遞歸:

1.取出先序的第一個節點。(先序中的節點爲根節點)
2.用第一個節點能夠將中序分紅左右子樹,而後又取出先序的第二個節點
   再次將左右子樹再次劃分,
3,當將中序所有劃分爲單個點時就結束。

例如:假設一顆二叉樹的先序序列是:EBADCFHGIKJ。 中序序列爲:ABCDEFGHIJK。請畫出該二叉樹



如何由二叉樹的先序和中序序列畫出二叉樹 - wz625 - wanna

生成的二叉樹以下圖所示:
如何由二叉樹的先序和中序序列畫出二叉樹 - wz625 - wanna
 


 問題擴展:      1,只有先序和中序 或 中序和後序能夠肯定一顆樹。先序和後序肯定不了一顆樹。      2,如何根據中序和後序肯定一顆樹呢?             方法跟上面的由先序和中序肯定一顆樹的思想大同小異。             例如:中序:BEDAC  後序:   EDBCA                                                              <---------找根的方向                 先是A是根,故有根A,左子樹爲BED  右子樹爲C                 而後是C爲根,C的左右子樹均爲空。                 而後是B爲根,B的左子樹爲空,右子樹爲ED                 而後是D爲根,D的左子樹爲E,右子樹爲空。                  而後是E爲根,左右子樹均爲空。            根據上面幾個步驟就能夠將肯定的樹畫出來
相關文章
相關標籤/搜索