樹轉換爲二叉樹
森林轉換爲二叉樹
樹的遍歷
樹的遍歷有兩種方式:先序遍歷和後序遍歷。
先序遍歷是先訪問根結點,再依次訪問根結點的每棵子樹,訪問子樹時仍然遵循先根再子樹的規則。
後序遍歷是先依次訪問根結點的每棵子樹,再訪問根結點,訪問子樹時仍然遵循先子樹再根的規則。
以下圖爲例:
先序遍歷:
- 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。
樹與二叉樹遍歷的關係:
樹轉換爲二叉樹後,樹的先序遍歷對應二叉樹的先序遍歷,樹的後序遍歷對應二叉樹的中序遍歷(注意不是後序遍歷)。所以,可以將樹轉換爲二叉樹後,藉助遍歷二叉樹的方法來遍歷樹。假如一棵樹已經轉化爲二叉樹來存儲,要得到其先序遍歷序列,只需先序遍歷這棵二又樹:要得到其後序遍歷序列只需中序遍歷這棵二叉樹。
圖解如下:
森林的遍歷
森林的遍歷方式有兩種:先序遍歷和後序遍歷。
先序遍歷的過程:先訪間森林中第一棵樹的根結點, 然後先序遍歷第棵樹中根結點的子樹, 最後先序遍歷森林中除了第一棵樹以外的其他樹。
後序遍歷的過程:後序遍歷第一棵樹中根結點的子樹, 然後訪問第一棵樹的根結點, 最後後序遍歷森林中除去第一棵樹以後的森林。
森林轉換爲二叉樹中,森林的先序遍歷對應二叉樹的先序遍歷,森林的後序遍歷對應二叉樹的中序遍歷。
圖解如下: