1. 樹、森林的轉換
(1) 利用孩子兄弟表示法,所有的樹都可以用二叉樹表示。
(2) 森林由多棵樹組成,所有樹轉化二叉樹之后,將他們的根節點作為兄弟結點,再用孩子兄弟表示法,結合成一個二叉樹。
2. 樹和二叉樹的轉換
(1) 在兄弟結點之間加一連線
(2) 每一結點只保留與第一個結點的連線,其他的抹掉
(3) 以樹根為軸心,順時針旋轉45°
關于第三步:其實就是把形成的新樹按照二叉樹的樣子進行擺設(除了看起來順眼一點,毫無意義)見下圖
Paste_Image.png
此處提到的,樹轉換而成的二叉樹其右子樹一定為空,道理很簡單,右孩子是結點的兄弟結點,而樹的根節點是不可能存在兄弟結點的。
3. 樹和森林的遍歷
(1) 樹的遍歷:先根遍歷,后根遍歷。訪問根結點的先后
(2) 森林遍歷:先序遍歷(從第一棵樹開始,挨著先序遍歷),中序遍歷(從第一棵樹開始,挨著后序遍歷)。
4. 遍歷的等價關系
樹 | 森林 | 二叉樹 |
---|---|---|
先根遍歷 | 先序遍歷 | 先序遍歷 |
后根遍歷 | 中序遍歷 | 中序遍歷 |
森林的先序遍歷就是把所有樹先根遍歷一遍
森林的中序遍歷就是把所有樹后根遍歷一遍,所以轉變成二叉樹的遍歷方法一樣。