資料結構二叉樹,已知中序遍歷後序遍歷,如何求先序遍歷

2021-05-25 11:31:59 字數 1059 閱讀 2877

1樓:我的餡是醬牛肉

preorder遍歷:訪問根節點的操作發生在遍歷左和右子樹之前。

中間順序遍歷:訪問根節點的操作發生在左邊和右邊的子樹中。

順序遍歷:訪問根節點的操作發生在遍歷左邊和右邊的子樹之後。

解決方案:首先,看到後序遍歷dbcefgha, a是總根節點。

然後發現中間順序遍歷a在edcbahfg中的位置,然後在a的左分支上的edcb,在a的右分支上的hfg;

重複前兩個步驟,最後一個從後序遍歷,在中間順序遍歷中搜尋相應的點,以及左和右分支…

最後,aecdbhgf可以自行驗證。

資料結構二叉樹已知中序遍歷,後序遍歷,求先序遍歷???

2樓:匿名使用者

通過分段來解決,找到根節點(通過後序),然後將中序序列分成兩段,左右子樹,版然後遞迴進行,分的時候可以利權用求中序的左右子樹的結點個數來確定後序序列的每段節點個數.

例如中 bdace

後 dbeca1.由後序遍歷的知道最後一個節點一定是根節點,該例中為a

2.中序中對應的根就是a,推得a為根bd為左子樹ce為右子樹

3.左子樹2個結點右子樹也為2個,因為後序遍歷是先左再右因此將後序分為兩段左db,右ec

4.由此確定左子樹的根為b,右子樹根為c

5.在回到中序中左子樹部分 bd (b為根)其右子樹為d 左子樹部分 根為c右子樹為e

如果結點和多的時候判斷都是這樣遞迴地進行.

由上述推得的結果

得到2叉樹的結構圖

-----a

----/--\

---b---c

----\-----\

-----d----e

得前序為 abcde

資料結構:二叉樹遍歷時,前序遍歷,中序遍歷,後序遍歷的相互推倒求解

3樓:匿名使用者

對一般二叉樹而言,用後序+中序或者 前序+ 中序就可以還原出二叉樹,這樣就可以推匯出另外一個遍歷序列了,不過前序+後序一般的二叉樹沒法還原,也就推導不出中序了

C語言程式設計輸入二叉樹的中序遍歷和後序遍歷。我怎麼利用它

中序遍歷來 左子 樹,根,右子樹 後序遍源歷 左子樹,右子樹,根 後序遍歷的最後一個節點是根。中序遍歷中以該根為界,先於該根的節點為左子樹中節點,後於該跟的節點為右子樹節點,將剩下的節點分成兩個子樹,遞迴進行操作。求一個用c語言寫的建立二叉樹。並且先序中序後序遍歷這個二叉樹 include incl...

已知二叉樹的先序遍歷和中序遍歷序列如下,構造相應的二叉樹

已知二叉樹的先序遍歷和中序遍歷序列如下,構造相應的二叉樹。1 2.3 4.5.6 7 根結點為1,則左為42,右5736,再看先根序列24 3576 左邊42在先根序列中以2為先,則1的下一層為2,再看中根序列42,所以4在2的右邊 右邊5736在先根序列中以3為先,則3的左邊是57,右邊是6 在先...

1用遞迴實現二叉樹的先序 中序 後序三種遍歷。2哈夫曼樹問題

在嗎?我給你。另外我有自己的實驗報告。裡面有遞迴遍歷,有迭代遍歷。可以寫檔案,可以壓縮編碼。可以讀檔案。你不需要什麼功能的話就刪去相應的函式就行了。希望加分。include include include include using namespace std const int maxlen 10...