二叉樹 已知前 後 序遍歷和中序遍歷,求解樹

2021-07-02 04:05:47 字數 1079 閱讀 3259

這種題一般有二種形式,共同點是都已知中序序列。如果沒有中序序列,是無法唯一確定一棵樹的,證明略。

一、已知二叉樹的前序序列和中序序列,求解樹。

1、確定樹的根節點。樹根是當前樹中所有元素在前序遍歷中最先出現的元素。

2、求解樹的子樹。找出根節點在中序遍歷中的位置,根左邊的所有元素就是左子樹,根右邊的所有元素就是右子樹。若根節點左邊或右邊為空,則該方向子樹為空;若根節點左邊和右邊都為空,則根節點已經為葉子節點。

3、遞迴求解樹。將左子樹和右子樹分別看成一棵二叉樹,重複1、2、3步,直到所有的節點完成定位。

二、已知二叉樹的後序序列和中序序列,求解樹。

1、確定樹的根。樹根是當前樹中所有元素在後序遍歷中最後出現的元素。

2、求解樹的子樹。找出根節點在中序遍歷中的位置,根左邊的所有元素就是左子樹,根右邊的所有元素就是右子樹。若根節點左邊或右邊為空,則該方向子樹為空;若根節點左邊和右邊都為空,則根節點已經為葉子節點。

3、遞迴求解樹。將左子樹和右子樹分別看成一棵二叉樹,重複1、2、3步,直到所有的節點完成定位。

舉例說明:根據已知求解二叉樹

中序序列 hldbekafcg

後序序列 lhdkebfgca

1、在後序序列lhdkebfgca中最後出現的元素為a,hldbek|a|fcg

2、在後序序列lhdkeb中最後出現的元素為b,hld|b|ek|a|fcg

3、在後序序列lhd中最後出現的元素為d,hl|d|b|ek|a|fcg

4、在後序序列lh中最後出現的元素為h,h|l|d|b|ek|a|fcg

5、在後序序列ke中最後出現的元素為e,h|l|d|b|e|k|a|fcg

5、在後序序列fgc中最後出現的元素為c,h|l|d|b|e|k|a|f|c|g

6、所有元素都已經定位,二叉樹求解完成。

a

/ \

b c

/ \ / \

d e f g

/ \

h k

\

l

已知後序遍歷和中序遍歷求二叉樹

輸入某二叉樹的後序遍歷和中序遍歷的結果,請輸出前序遍歷序列。假設輸入的後序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入後序遍歷序列和中序遍歷序列,重建二叉樹並返回後序遍歷序列 輸入某二叉樹的後序遍歷和中序遍歷的結果 輸出前序遍歷序列 7 4 2 5 8 6 3 1 4 7 2 1 5 3 8 6...

二叉樹已知先序遍歷和中序遍歷得到後序遍歷

已經乙個二叉樹先序遍歷acdefhgb,中序遍歷decahfbg,求後序遍歷?先序遍歷 1 訪問根節點 2 先序遍歷左子樹 3 先序遍歷右子樹 中序遍歷 1 中序遍歷左子樹 2 訪問根節點 3 中序遍歷右子樹 後序遍歷 1 後序遍歷左子樹 2 後序遍歷右子樹 3 訪問根節點 解題思路 首先看先序遍歷...

已知二叉樹先序遍歷中序遍歷求後序遍歷

思路簡介 先序遍歷中第乙個字母即為根節點,在中序遍歷中找到根節點的位置 把中序遍歷的字串序列從根節點分成兩部分,左側一部分構建左子樹,右側一部分構建右子樹 在 的基礎上在先序遍歷中也找到構建左右子樹的部分 遞迴還原二叉樹 後序遍歷輸出即可 include include using namespac...