前序 中序 後序 遍歷的求解

2021-06-19 01:44:06 字數 843 閱讀 1735

例如:在一棵二叉樹總,前序遍歷結果為:abdgcefh,中序遍歷結果為:dgbaechf,求後序遍歷結果。

我們知道:

前序遍歷方式為:根節點->左子樹->右子樹

中序遍歷方式為:左子樹->根節點->右子樹

後序遍歷方式為:左子樹->右子樹->根節點

從這裡可以看出,前序遍歷的第乙個值就是根節點,然後再中序遍歷中找到這個值,那麼這個值的左邊部分即為當前二叉樹的左子樹部分前序遍歷結果,這個值的右邊部分即為當前二叉樹的右子樹部分前序遍歷結果。因此,通過這個分析,可以恢復這棵二叉樹

就該題為例,從前序遍歷可以發現a為根節點,從中序遍歷可以發現  dgb為左子樹 echf為右子樹
下面開始畫左子樹   這一步的關鍵是,不要把左子樹當乙個枝看待,要當成一棵新樹看待
那麼這棵新樹 的前序遍歷也就是  整棵樹前序遍歷的包含所有左子樹的部分bdg
中序遍歷也就是整棵樹中序遍歷的包含左子樹的部分 dgb
那麼可以把上面的結果當成乙個新樹採用第一步同樣方法處理,就可以一步一步得到結果,當然右側部分也跟左側一模一樣方式處理
這種方式其實和前中退出後序是一樣的從後序入手找根節點,從中序找子樹。拆解完後的新樹,還是按照第一步從後序找跟,中序找子樹。

這個相對要難一點,從前後都能一眼看到根節點,前序中緊鄰根節點的是左子樹的跟,那麼後序中這個字母前(包括該字母)都是左子樹,剩下的去掉根後都是右子樹。得到子樹之後,後面的都是採用遞迴,將新的子樹當樹,採用第一步同樣的方法來處理

前序 中序 後序遍歷

先序遍歷也叫做 先根遍歷 前序遍歷,可記做根左右 二叉樹父結點向下先左後右 首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹,如果二叉樹為空則返回。例如,下圖所示二叉樹的遍歷結果是 abdecf 中序遍歷首先遍歷左子樹,然後訪問根結點...

前序中序後序遍歷

一道hulu的筆試題 how i wish yesterday once more 假設有棵樹,長下面這個樣子,它的前序遍歷,中序遍歷,後續遍歷都很容易知道。preorder gdafemhz inorder adefghmz postorder aefdhzmg 現在,假設僅僅知道前序和中序遍歷,...

前序遍歷 中序遍歷 後序遍歷

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