已知二叉樹前序 後序遍歷如何求中序

2021-08-10 23:13:44 字數 901 閱讀 2357

已知二叉樹的兩種遍歷求第三種遍歷。

已知前序和中序求後序,已知後序和中序求前序,這兩種解法網上有很多,但是已知前序和後序求中序的解法我沒找到,這裡寫乙個自己的想法,有可能大家已經想到了我沒有搜尋到而已

首先,我們看看前序、中序、後序遍歷的特性: 

前序遍歷: 

1.訪問根節點 

2.前序遍歷左子樹 

3.前序遍歷右子樹 

中序遍歷: 

1.中序遍歷左子樹 

2.訪問根節點 

3.中序遍歷右子樹 

後序遍歷: 

1.後序遍歷左子樹 

2.後序遍歷右子樹 

3.訪問根節點

思路:把後序的遍歷結果做一下顛倒,那麼結果就是

1.訪問根節點

2.後序遍歷右子樹 

3.後序遍歷左子樹 

根據這個結果和前序結果比較求出結果。

例如:乙個已知二叉樹的前序遍歷為:abdghcef,後序遍歷為:ghdbefca  求中序遍歷的結果.

解法:將後序的遍歷結果顛倒過來就是acfebdhg

我們把前序遍歷的結果命名(1):abdghcef  顛倒過來的命名為(2):acfebdhg

1.很明顯根節點是a,

2.從(1)的結果看a緊跟著的是b開頭的左子樹

3.從(2)的結果看a後面緊跟著的是c開頭的右子樹

那麼屬於左子樹的應該為bdgh 屬於右子樹的應該是cfe

我們又有左子樹的前序遍歷(3):bdgh  顛倒的遍歷(4):bdhg

重複上面的步驟可以繼續拆分為更小的單位。

當然結果有時候不唯一,這是已知條件決定的。

出處:

已知二叉樹前序和中序求後序

設某二叉樹 前序遍歷為 abcdefghi 中序遍歷為 bcaedghfi 求該二叉樹的後序遍歷?因為二叉樹前序遍歷為 abcdefghi,所以這棵樹的根結點為 又因為中序遍歷為 bcaedghfi,所以這棵樹的左子樹為bc,右子樹為edghfi 現在先看左子樹中序遍歷 bc,由前序遍歷abcdef...

二叉樹 前序遍歷 中序遍歷 後序遍歷

前序遍歷 dlr 是二叉樹遍歷的一種,也叫做先跟遍歷,先序遍歷,前序周遊,可記做根左右。前序遍歷首先訪問根節點然後遍歷左子樹,最後遍歷右子樹。前序遍歷首先訪問根節點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根節點,然後遍歷左子樹,最後遍歷右子樹。若二叉樹為空則結束返回,否則 1 ...

二叉樹前序,中序,後序遍歷詳解

只要是搞計算機的,對資料結構中二叉樹遍歷都不陌生,但是如果用到的機會不多那麼就會慢慢淡忘,溫故而之新才是最好的學習方式,現在就重新溫習一下這方面的知識。首先我想先改變這幾個遍歷的名字 前根序遍歷,中根序遍歷,後根序遍歷 前中後本來就是相對於根結點來說的,少乙個字會產生很多不必要的誤解。1.前根序遍歷...