遍歷是針對根節點的
前序遍歷順序:根節點--左子樹--右子樹
中序遍歷順序:左子樹--根節點--右子樹
後序遍歷順序:左子樹--右子樹--根節點
深入一點去理解這個排序順序是這樣的
前序遍歷
首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。在遍歷左、右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。
中序遍歷
首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。在遍歷左、右子樹時,仍然先遍歷左子樹,再訪問根結點,最後遍歷右子樹。後序遍
歷首先遍歷左子樹,然後遍歷右子樹,最後訪問根節點。在遍歷左、右子樹時,仍然先遍歷左子樹,再遍歷右子樹,最後訪問根結點。
也就是說我們在遍歷的時候必然是一層一層去尋找,並且不斷遞迴。
說明
已知前序遍歷與中序遍歷,可確定唯一二叉樹;
已知中序遍歷與後序遍歷,可確定唯一二叉樹;
但是已知前序遍歷與後序遍歷,無法確定唯一二叉樹。
舉個例子來看懂樹的排序
如果我們已知中序遍歷是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...