一、樹轉換為二叉樹
樹中每個結點最多只有乙個最左邊的孩子(長子)和乙個右鄰的兄弟。按照這種關係很自然地就能將樹轉換成相應的二叉樹:
①左孩子仍為左孩子;
②右兄弟成為右孩子
下面(a)圖所示的樹可轉換為(c)圖所示的二叉樹。
注意:由於樹根沒有兄弟,故樹轉化為二叉樹後,二叉樹的根結點的右子樹必為空。
1.先根遍歷
先根遍歷的定義為:
(1)訪問根結點;
(2)按照從左到右的順序先根遍歷根結點的每一棵子樹。
2.後根遍歷
後根遍歷的定義為:
(1)按照從左到右的順序後根遍歷根結點的每一棵子樹。
(2)訪問根結點;
二、森林轉換為二叉樹
具體方法是:
① 將森林中的每棵樹變為二叉樹
② 因為轉換所得的二叉樹的根結點的右子樹均為空,故可將各二叉樹的根結點視為兄弟從左至右連在一起,就形成了一棵二叉樹。
下圖中,左邊包含三棵樹的森林可轉換為右邊的二叉樹。
1.前序遍歷
前序遍歷的定義為:
(1)訪問森林中第一棵樹的根結點;
(2)前序遍歷第一棵樹的根結點的子樹;
(3)前序遍歷去掉第一棵樹後的子森林。
2.中序遍歷
中序遍歷的定義為:
(1)中序遍歷第一棵樹的根結點的子樹;
(2)訪問森林中第一棵樹的根結點;
(3)中序遍歷去掉第一棵樹後的子森林。
三、樹和森林的遍歷
樹的先根遍歷=所轉換二叉樹的先序遍歷
樹的後跟遍歷=所轉換二叉樹的中序遍歷
森林的遍歷=所轉換二叉樹的遍歷
二叉樹 樹 森林轉換
1 加線。在所有兄弟結點之間加一條連線。2 去線。樹中的每個結點,只保留它與第乙個孩子結點的連線,刪除它與其它孩子結點之間的連線。3 層次調整。以樹的根節點為軸心,將整棵樹順時針旋轉一定角度,使之結構層次分明。注意第乙個孩子是結點的左孩子,兄弟轉換過來的孩子是結點的右孩子 1 把每棵樹轉換為二叉樹。...
樹 森林和二叉樹的轉換
樹轉換為二叉樹 1 加線。在所有兄弟結點之間加一條連線。2 去線。樹中的每個結點,只保留它與第乙個孩子結點的連線,刪除它與其它孩子結點之間的連線。3 層次調整。以樹的根節點為軸心,將整棵樹順時針旋轉一定角度,使之結構層次分明。注意第乙個孩子是結點的左孩子,兄弟轉換過來的孩子是結點的右孩子 森林轉換為...
樹 森林和二叉樹的轉換
樹轉換為二叉樹 1 加線。在所有兄弟結點之間加一條連線。2 去線。樹中的每個結點,只保留它與第乙個孩子結點的連線,刪除它與其它孩子結點之間的連線。3 層次調整。以樹的根節點為軸心,將整棵樹順時針旋轉一定角度,使之結構層次分明。注意第乙個孩子是結點的左孩子,兄弟轉換過來的孩子是結點的右孩子 森林轉換為...