二叉樹的四種遍歷方式


  • 二叉樹的遍歷(traversing binary tree)是指從根結點出發,按照某種次序依次訪問二叉樹中所有的結點,使得每個結點被訪問依次且僅被訪問一次。
    四種遍歷方式分別為:先序遍歷、中序遍歷、后序遍歷、層序遍歷。

PS:由於在二叉樹這一個分類中都能找到對應的代碼,所以詳細代碼就不在這里貼了

一、先序遍歷

  1. 訪問根節點
  2. 用先序遍歷的方式訪問左子樹
  3. 用先序遍歷的方式訪問右子樹

圖的思維過程

  1. 訪問根節點A
  2. A分為左右兩個子樹,遞歸調用,所以遵循“根節點-左-右”,所以訪問B節點
  3. 同2步驟,訪問D節點
  4. 此時D沒有分支,回溯到B訪問F節點
  5. 同2步驟,訪問E節點,同4步驟,回溯F,F右兒子為空,回溯B,B左右兒子遍歷完畢,回溯A,此時A的左子樹已經遍歷完成,開始遍歷右子樹
  6. 同樣訪問節點C
  7. 同步驟2訪問節點G
  8. G左子樹為空,訪問右兒子H
  9. H沒有分支,回溯G,G遍歷完成,回溯C,遍歷I節點,這樣整棵樹就已經遍歷完成。

遍歷結果:A BDFE CGHI

二、中序遍歷

  1. 用中序遍歷訪問左子樹
  2. 訪問根節點
  3. 用中序遍歷訪問右子樹

過程跟先序遍歷差不多,這里不多敘述。
遍歷結果:BDEF A GHCI

三、后序遍歷

  1. 用后序遍歷訪問左子樹
  2. 用后序遍歷訪問右子樹
  3. 訪問根節點

過程跟先序遍歷差不多,這里不多敘述。
遍歷結果 DEFB HGIC A

小結

三種遍歷方法基本路線是一樣的,只是訪問每個節點的時機不同形成了不同的輸出。

四、層序遍歷

層序遍歷所要解決的問題很好理解,就是按二叉樹從上到下,從左到右依次打印每個節點中存儲的數據。

層序遍歷跟上面三種遍歷有些不一樣,層序遍歷采用的是數據結構中的隊列。

  1. 根節點入隊
  2. 訪問隊首元素,左兒子若不為空則左子葉入隊,右兒子若不為空則入隊
  3. 隊首元素出隊
  4. 重復3 、4步驟,直到隊列為空為止

圖的思維過程

  1. A入隊
  2. 訪問隊首A,左兒子不為空,B入隊,右兒子不為空,C入隊,A出隊
  3. 訪問隊首B,左右兒子為空,不用操作,B出隊
  4. 訪問隊首C,同步驟2
  5. 訪問隊首D,同步驟3
  6. 訪問隊首E,同步驟2
  7. 訪問隊首F,同步驟3
  8. 訪問隊首G,同步驟3

遍歷結果 ABCDEFG

引用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM