最近學了二叉樹的三種遍歷方式,即前序遍歷,中序遍歷,後序遍歷三種,仔細思索後,在此簡單總結一下。
一.二叉樹示意圖
假設有一顆二叉樹如下:
二.遍歷分析
每一顆二叉樹由根節點,左子樹,右子樹三個部分組成,規定先遍歷左子樹,再遍歷右子樹,這樣一來就有了三種遍歷方式,按照遍歷根節點的先後順序來劃分,根->左->右方式就是前序遍歷,左-
>
根->右方式就是中序遍歷,左
->
右->
根自然就是後序遍歷了。
需要重點理解的是,對二叉樹的遍歷實際上是一種遞迴,每種方式都是從根節點出發,按照相應的順序進行遍歷,比如前序遍歷,首先訪問根節點,即a,然後訪問左子樹,左子樹的根節點為b,因此接下來訪問b節點,然後繼續訪問左子樹的左子樹,也即是根節點為d的左子樹,自然,第三個訪問的節點應該是d,然後繼續訪問左子樹,此時第四個左子樹根節點為h(當然也只有乙個根節點,沒有左右子樹了),因此第四個訪問的節點為h。
然後返回,注意此時根節點為d的子樹已經遍歷完畢,應該遍歷根節點為b的子樹的右子樹,因此第五個訪問的節點為e,訪問e節點以後,以a為根節點的二叉樹的左子樹也已經訪問完畢了,應該訪問其左子樹,按照之前的邏輯,很容易分析出接下來應該依次訪問c、f、g三個節點,至此,二叉樹遍歷完畢,前序遍歷結果為abdhecfg
下面給出三種不同方式遍歷上圖二叉樹的答案,除了訪問根節點的順序不同以外,分析過程大同小異,就不多贅述了。
1. 前根序遍歷:先遍歷根結點,然後遍歷左子樹,最後遍歷右子樹。
abdhecfg
2.中根序遍歷:先遍歷左子樹,然後遍歷根結點,最後遍歷右子樹。
hdbeafcg
3.後根序遍歷:先遍歷左子樹,然後遍歷右子樹,最後遍歷根節點。
hdebfgca
二叉樹三種遍歷方式
三種遍歷方式是按照根節點的訪問順序來定義的 1 前序遍歷 先訪問根結點 然後遍歷左子樹,最後遍歷右子樹 並且,在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。根左右 2 中序遍歷 先遍歷左子樹 然後訪問根結點,最後遍歷右子樹 並且,在遍歷左 右子樹時,仍然先遍歷左子樹,然後訪問...
重建二叉樹 遍歷二叉樹的三種方式
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。示例 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7限制 0 節點個數 5000 這個題的解法...
二叉樹的三種遍歷
重新又看了一遍二叉樹 binary tree 發現很多東西自己還沒有弄明白,原來三種遍歷方式還不是自己想象中的那樣 前序遍歷 preorder 是先輸出自己,然後左,最後右。中序遍歷 inorder 是先左,再輸出自己,最後右。後序遍歷 postorder 是先左,再右,最後輸出自己。所謂的xx遍歷...