二叉樹的遍歷
二叉樹的遍歷方法有
- 層序遍歷
- 先(前)序遍歷
- 中序遍歷
- 後序遍歷
詳細說明
以下面的二叉樹進行說明:
層序遍歷
即從上到下按層次訪問該樹,每一層單獨輸出一行,每一層要求訪問的順序爲從左到右。
例子中層序遍歷爲EBFADHCGIKJ,一層一層從上往下,從左往右輸出。
先序遍歷
遍歷順序是 先根再左子樹再右子樹,訪問根結點的操作發生在遍歷其左右子樹之前。(中左後)
我們看例子
- 首先從根節點
E
開始,先根輸出E,然後左子樹B
,此時的位置在B,B相當於AD兩個結點的根,所以遍歷B之後,遍歷B的左子樹A,A沒有孩子結點,所以遍歷B的右子樹D,D有左子樹遍歷C,這樣完成了E的左子樹遍歷,再遍歷E的右子樹F,再遍歷F的左子樹,這裏沒有,就遍歷F的右子樹H,然後再遍歷H的左右子樹,左子樹G,當然G沒有孩子結點,所以接下來是I,然後 K J類似。
所以先序遍歷是EBADCFHGIKJ
,記住一點,訪問根結點的操作發生在遍歷其左右子樹之前,在上面的例子中,訪問完E之後訪問B,接下來不是訪問F,而是訪問B的左右子樹
中序遍歷
先左子樹再根再右子樹 (左中右
)
- 中序遍歷就是 B A C,如果B有左右子樹,如下圖,再訪問B之前先訪問B的左子樹
- 中序遍歷爲 D B E A C,如果C有右子樹沒有左子樹,如下圖則是先訪問C再訪問F
以上的例子: ABCDEFGHIJK
,在訪問E的時候,發現E有左子樹B,先B,再訪問B的時候發現有左子樹A,所以肯定還是A先,所以這個序列是從A開始的
後序遍歷
其訪問順序是先左再右再根
例子中,最後的結果順序是:ACDBGJKIHFE
重點
- 前序的第一個是整個樹的根
- 中序用來判別左右子樹的劃分
- 前序序列中左子樹部分的第一個節點是左子樹的根節點
- 前序序列中右子樹部分的第一個節點是右子樹的根節點