(1 2 5 5)樹 森林和二叉樹的轉換

2021-06-29 03:10:56 字數 1128 閱讀 5193

一、樹轉換為二叉樹

樹中每個結點最多只有乙個最左邊的孩子(長子)和乙個右鄰的兄弟。按照這種關係很自然地就能將樹轉換成相應的二叉樹:

①左孩子仍為左孩子;

②右兄弟成為右孩子

下面(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 層次調整。以樹的根節點為軸心,將整棵樹順時針旋轉一定角度,使之結構層次分明。注意第乙個孩子是結點的左孩子,兄弟轉換過來的孩子是結點的右孩子 森林轉換為...