考研數據結構之樹(6.4)——樹和森林與二叉樹的相互轉換(C表示)

樹轉換爲二叉樹

森林轉換爲二叉樹

樹的遍歷

樹的遍歷有兩種方式:先序遍歷和後序遍歷。

先序遍歷是先訪問根結點,再依次訪問根結點的每棵子樹,訪問子樹時仍然遵循先根再子樹的規則。

後序遍歷是先依次訪問根結點的每棵子樹,再訪問根結點,訪問子樹時仍然遵循先子樹再根的規則。

以下圖爲例:

先序遍歷:

  • 1)訪問根結點A。
  • 2)訪問A的第一棵子樹,訪問子樹時先訪問根結點B.
  • 3)訪問B的第一個孩子E.
  • 4) 訪問B的第二個孩子 F.
  • 5)訪問A的第二棵子樹,訪間子樹時先訪問根結點C。
  • 6)訪問C的第一個孩子 G.
  • 7)訪間A的第三棵子樹,訪間子樹時先訪問根結點D.
  • 8)訪問D的第一個孩子H。
  • 9)訪問D的第二個孩子I。
  • 10)訪問D的第三個孩子J。

先序遍歷的結果爲ABEFCGDHIJ

後序遍歷:

  • 1)訪問根結點A的第一棵子樹,訪問子樹時先訪問根B的第一個孩子E.
  • 2)訪問B的第二個孩子F.
  • 3)訪問B.
  • 4)訪問A的第二棵子樹,訪問子樹時先訪問根C的第一個孩子G.
  • 5)訪問C.
  • 6)訪問A的第三棵子樹,訪問子樹時先訪問根D的第一個孩子H。
  • 7)訪問D的第二個孩子I。
  • 8)訪問D的第三個孩子J。
  • 9)訪問D。
  • 10)最後訪問根結點A.

後序遍歷的結果爲EFBGCHIJDA

樹與二叉樹遍歷的關係:

樹轉換爲二叉樹後,樹的先序遍歷對應二叉樹的先序遍歷,樹的後序遍歷對應二叉樹的中序遍歷(注意不是後序遍歷)。所以,可以將樹轉換爲二叉樹後,藉助遍歷二叉樹的方法來遍歷樹。假如一棵樹已經轉化爲二叉樹來存儲,要得到其先序遍歷序列,只需先序遍歷這棵二又樹:要得到其後序遍歷序列只需中序遍歷這棵二叉樹。

圖解如下:

森林的遍歷

森林的遍歷方式有兩種:先序遍歷和後序遍歷。

先序遍歷的過程:先訪間森林中第一棵樹的根結點, 然後先序遍歷第棵樹中根結點的子樹, 最後先序遍歷森林中除了第一棵樹以外的其他樹。

後序遍歷的過程:後序遍歷第一棵樹中根結點的子樹, 然後訪問第一棵樹的根結點, 最後後序遍歷森林中除去第一棵樹以後的森林。

森林轉換爲二叉樹中,森林的先序遍歷對應二叉樹的先序遍歷,森林的後序遍歷對應二叉樹的中序遍歷。

圖解如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章