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

2021-08-21 18:35:40 字數 1035 閱讀 1048

遍歷是針對根節點的

前序遍歷順序:根節點--左子樹--右子樹

中序遍歷順序:左子樹--根節點--右子樹

後序遍歷順序:左子樹--右子樹--根節點

深入一點去理解這個排序順序是這樣的

前序遍歷

首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。在遍歷左、右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。

中序遍歷

首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。在遍歷左、右子樹時,仍然先遍歷左子樹,再訪問根結點,最後遍歷右子樹。後序遍

歷首先遍歷左子樹,然後遍歷右子樹,最後訪問根節點。在遍歷左、右子樹時,仍然先遍歷左子樹,再遍歷右子樹,最後訪問根結點。

也就是說我們在遍歷的時候必然是一層一層去尋找,並且不斷遞迴。

說明

已知前序遍歷與中序遍歷,可確定唯一二叉樹;

已知中序遍歷與後序遍歷,可確定唯一二叉樹;

但是已知前序遍歷與後序遍歷,無法確定唯一二叉樹。

舉個例子來看懂樹的排序

如果我們已知中序遍歷是dbeafc,前序遍歷是abdecf,求後序遍歷。

解:根據前序遍歷abdecf,a肯定是根節點(第乙個遍歷根節點)。對照中序遍歷,就能知道dbe是左子樹,fc是右子樹。

左子樹:中序dbe,前序是bde;說明b是左子樹的根節點,d是b的左孩子,e是右孩子。

右子樹類似:c是右子樹的根節點,f是c的左孩子(因為中序遍歷中f是在c前面的,所以一定是左孩子;如果f在c的後面,就是右孩子)

後序遍歷debfca

所以我們已知樹去寫三種不同的遍歷的時候,就是不斷的把樹拆分成左子樹,根節點,右子樹,一級一級的拆分下去。最終獲得最小的二叉樹,可以輕易的寫出來順序。

或者我們已知兩種遍歷結果(前提是可以唯一確定二叉樹),我們根據前序遍歷或者後續遍歷可以立即得到根節點是什麼,根據根節點將中序遍歷拆分,立即獲得左子樹與右子樹內容。在一級一級的拆分下去。可獲得完整的二叉樹結構。

演算法程式:

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

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

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

前序遍歷 dlr 前序遍歷也叫做先根遍歷 先序遍歷,可記做根左右。前序遍歷首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。若二叉樹 為空則結束返回,否則 1 訪問根結點。2 前序遍歷左子樹。3 前序遍歷右子樹 需要注意的是 遍歷左右...

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

根據根節點的出現的時間確定前 中 後遍歷。1 前序遍歷首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。前序遍歷結果 abdecf 2 中序遍歷首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹,若二叉樹為空則結束返回,中序遍歷結果 db...