1. 程式人生 > >郝斌資料結構入門--P70-樹 已知兩種遍歷序列求原始二叉樹

郝斌資料結構入門--P70-樹 已知兩種遍歷序列求原始二叉樹

郝斌資料結構入門--P70-樹 已知兩種遍歷序列求原始二叉樹

 

已知先序、中序、後序任何一種序列,不能夠找到原始二叉樹。

經過研究發現,已知一棵樹的兩種序列,可以把二叉樹求出來。

也經過研究發現,已知先序和後序,無法還原出原始的二叉樹。

最終表明,通過  先序和中序  或者  中序和後序  我們可以還原出原始的二叉樹。(有一個是中序!!)

 

 

 

已知先序和中序求後序

規律:(在後序,確定根節點,找到根節點的下一個節點。在中序確定哪些是左子樹,哪些是右子樹)
1、先序的第一個節點是整棵樹的根節點(A),以這個節點在中序裡面劃分左子樹(左邊)和右子樹(右邊)
2、中序裡面,根節點是中間出現的,根節點的左邊是左子樹,根節點的右邊是右子樹
3、判斷左子樹和右子樹的根節點,在先序裡面,劃分左子樹和右子樹的節點,最先出現的節點是子樹的根節點(B、F),因為先序第一個是根節點

下圖:

從先序確定A為根節點,B為左子樹的根節點,F為右子樹的根節點。

從中序確定BDCE為左子樹,FHG為右子樹。從中序可以知道節點B、F是否有左、右子樹。

 

 

 

已知中序和後序求先序

規律:(在後序,確定根節點,找到根節點的下一個節點。在中序確定哪些是左子樹,哪些是右子樹)
1、後序的最後一個節點是整棵樹的根節點(A),以這個節點在中序裡面劃分左子樹(左邊)和右子樹(右邊)
2、中序裡面,根節點是中間出現的,根節點的左邊是左子樹,根節點的右邊是右子樹
3、判斷左子樹和右子樹的根節點,在後序裡面,劃分左子樹和右子樹的節點,最後出現的節點是子樹的根節點(B、F),因為後序最後一個是根節點

下圖:

從後序確定A為根節點,B為左子樹的根節點,F為右子樹的根節點。

從中序確定BDCE為左子樹,FHG為右子樹。從中序可以知道節點B、F是否有左、右子樹。