根據兩種二叉樹遍歷方式,求二叉樹方法

2021-08-20 09:16:21 字數 840 閱讀 6143

如何根據已知兩種遍歷的序列,求原始的二叉樹?

並不是已知道任意兩個序列都可以還原二叉樹,只有知道先序中序以及中序和後序兩種型別的遍歷順序才能還原二叉樹。只知道先序和後序是還原不了原始的二叉樹的。

(1)已知道先序和中序遍歷,還原二叉樹。

已知道二叉樹的先序遍歷為abcdefgh,中序遍歷為bdceafhg,求後序遍歷。

先序(根,左,右)  中序(左,根,右)

①根據先序遍歷可以知道根節點為a。

②根據中序遍歷可以知道bdce是二叉樹的左子樹。fhg是右子樹。左子樹bdce,在先序遍歷可以看出b先出現,為根節點,在根據中序遍歷可以知道左子樹沒有左子樹,dce為b的右子樹,根據先序遍歷,c先出現為根節點。d為左子樹,e為右子樹。

③fhg是右子樹。先序遍歷中f先出現,為根節點,說明右子樹沒有左子樹。hg為右子樹,先序遍歷中g先出現,為根節點,h為g的左子樹,所以二叉樹為

(2)已知道中序和後序遍歷,求二叉樹先序遍歷。

已知中序bdceafhg,後序decbhgfa,求先序遍歷。

①由後序遍歷可知道根節點為a

②再根據中序遍歷可以知道,左子樹為bdce。根據後序遍歷後出現的是根節點,所以b為根節點,所以左子樹沒有左子樹,右子樹為dce   ,後序遍歷中c後出現為根,所以c的左子樹為d,右子樹為e。

③右子樹為fhg,後序遍歷f後出現為根節點,f的右子樹為hg,後序遍歷中g先出現為根節點,h為g的左子樹。所以此二叉樹即為上圖的二叉樹:

所以先序為a-b-c-d-e-f-g-h

二叉樹 二叉樹遍歷 根據先序建立二叉樹

題目描述 編乙個程式,讀入使用者輸入的一串先序遍歷字串,根據此字串建立乙個二叉樹 以指標方式儲存 例如如下的先序遍歷字串 abc de g f 其中 表示的是空格,空格字元代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結輸入 輸入包括1行字串,長度不超過100。輸出 可能有多組測試資...

二叉樹 根據二叉樹遍歷序列構造二叉樹

二叉樹的節點型別宣告如下 struct btnode 定理1任何 n 0 個不同節點的二叉樹,都可由它的前序序列和中序序列唯一地確定。根據前序遍歷的特點,知前序序列 presequence 的首個元素 presequence 0 為二叉樹的根 root 然後在中序序列 insequence 中查詢此...

二叉樹 根據遍歷構造二叉樹

二叉樹中的三種遍歷方式,是我們最為熟知的,通過先序遍歷 中序遍歷或者是中序遍歷 後序遍歷都可以唯一確定一棵二叉樹 但是注意,先序遍歷 後序遍歷不能確定一棵二叉樹,但是如果一棵二叉樹中只有度為0和度為2的節點,那麼這種遍歷方式也是可以確定一棵確定的二叉樹的。先序 中序 構造二叉樹 下面我們分別來看一下...