郝斌資料結構入門--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是否有左、右子樹。