1. 程式人生 > >資料結構之"二叉樹的三種遍歷方法"

資料結構之"二叉樹的三種遍歷方法"

1、什麼是二叉樹

定義:有且僅有一個根節點,每個節點只有一個父節點,最多含有兩個子節點,子節點有左右之分。

2、二叉樹的遍歷

二叉樹是一種樹形結構,遍歷就是要讓樹中的節點被且僅被訪問一次,即按一定規律排列成一個線性佇列。二叉樹是一種遞迴定義的結構,包含三個部分:根節點(N)、左子樹(L)、右子樹(R)。根據這三個部分的訪問次序對二叉樹的遍歷進行分類,總共有6種遍歷方案:NLR、NRL 、LNR、 LRN 、RLN 、RNL 。研究二叉樹的遍歷就是研究這6種具體的遍歷方案,顯然根據簡單的對稱性,左子樹和右子樹的遍歷可互換,即NLR和NRL、LNR和RNL、LRN和RLN。分別稱為“先序遍歷”(根左右)、“中序遍歷”(左根右)和“後序遍歷”(左右根)。

      

先序遍歷(根左右):

  1. 從A點看起,根節點為A,記錄A,左節點為B,記錄B,B沒有左節點,右節點為C,根據根左右原則,記錄C,把C當做根節點,左子樹為D,記錄D,此時根節點A的左子樹部分記錄完成。
  2. 此時返回節點A,右子樹為E,根據根左右原則,記錄E,把E看做根節點,E沒有左子樹,記錄E,右子樹為F,把F看做根節點,記錄F,左子樹為G,沒有右子樹,把G看做根節點,記錄G,G的左子樹為H,記錄H,右子樹為K,記錄K
  3. 因此順序為:ABCDEFGHK

中序遍歷(左根右):

  1. 從根節點A開始,左子樹為B,此時把B 看做根節點,B沒有左子樹,返回B ,記錄B,B有右子樹C,把C看做根節點,C的左子樹為D,記錄D
    ,返回C,記錄C,C沒有右子樹,因此返回A,記錄A
  2. 根節點A有右子樹E,此時把E看做根節點,E沒有左子樹,返回E,記錄E,E的右子樹為F,把F看做根節點,F的左子樹為G,G有子節點,把G看做根節點,G的左子樹為H,記錄H,返回G,記錄G,G的右子樹為K,記錄K,返回G,由G返回F,記錄F
  3. 中序遍歷順序為:BDCAEHGKF

後序遍歷(左右根):

  1. 從根節點A開始,A的左子樹為B,根據左右根原則,把B看做根節點,B沒有左子樹,B有右子樹C,C有左子樹D,記錄D,C沒有右子樹,此時返回C,記錄C,由C返回B,記錄B,此時返回了根節點A,A有右子樹E
  2. 此時把E看做根節點,E沒有左子樹,E的右子樹為F,把F看做根節點,F的左子樹為G,把G看做根節點,G 有左子樹H,根據左右根原則,記錄H
    ,G有右子樹K,記錄K,由K返回G,記錄G,由G返回F,F沒有右子樹,記錄F,由F返回E,E沒有左子樹,因此記錄E,由E返回A,記錄A
  3. 後序遍歷順序為:DCBHKGFEA