樹 森林 二叉樹的轉換

2021-07-11 01:00:35 字數 792 閱讀 4982

**:樹、森林與二叉樹的轉換

樹或森林與二叉樹之間有乙個自然的一一對應關係。任何乙個森林或一棵樹可惟一地對應到一棵二叉樹;反之,任何一棵二叉樹也能惟一地對應到乙個森林或一棵樹。

1.樹、森林到二叉樹的轉換

(1)將樹轉換為二叉樹

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

①在所有兄弟結點之間加一連線;

②對每個結點,除了保留與其長子的連線外,去掉該結點與其它孩子的連線。

【例1】下面(a)圖所示的樹可轉換為(c)圖所示的二叉樹。具體轉換過程可【參見動畫演示】

注意:由於樹根沒有兄弟,故樹轉化為二叉樹後,二叉樹的根結點的右子樹必為空。

(2)將乙個森林轉換為二叉樹

具體方法是:

① 將森林中的每棵樹變為二叉樹

② 因為轉換所得的二叉樹的根結點的右子樹均為空,故可將各二叉樹的根結點視為兄弟從左至右連在一起,就形成了一棵二叉樹。

【例2】下圖中,左邊包含三棵樹的森林可轉換為右邊的二叉樹。 

具體轉換過程可【參見動畫演示】 

2.二叉樹到樹、森林的轉換

把二叉樹轉換到樹和森林自然的方式是:若結點x是雙親y的左孩子,則把x的右孩子,右孩子的右孩子,…,都與y用連接連起來,最後去掉所有雙親到右孩子的連線。

【例3】下圖的森林就是由例2中二叉樹轉換成的。  

具體轉換過程可【參見動畫演示】

二叉樹 樹 森林轉換

1 加線。在所有兄弟結點之間加一條連線。2 去線。樹中的每個結點,只保留它與第乙個孩子結點的連線,刪除它與其它孩子結點之間的連線。3 層次調整。以樹的根節點為軸心,將整棵樹順時針旋轉一定角度,使之結構層次分明。注意第乙個孩子是結點的左孩子,兄弟轉換過來的孩子是結點的右孩子 1 把每棵樹轉換為二叉樹。...

樹 森林 二叉樹的轉換

樹變二叉樹 樹變二叉樹的規則 每個結點的左指標指向它的第乙個孩子結點。右指標指向它在樹中的相鄰兄弟結點。也即 左孩子右兄弟。根沒有兄弟,所以轉換以後的樹沒有右子樹。具體操作 二叉樹變樹 二叉樹變樹的規則 是樹變二叉樹的逆過程。問 二叉樹可以變成各種各樣的樹,為何這裡只是唯一一種樹形?這裡只是假設這個...

樹,二叉樹,森林的轉換

一 樹與森林的轉換 將一棵非空樹的根節點刪去,樹變成森林,反之森林新增乙個節點,變成樹。二 樹轉換為二叉樹 1 樹中所有相鄰兄弟之間加一條線。2 樹中的每個節點,只保留與其第乙個孩子節點之間的連線,刪去其他孩子節點之間的連線。3 以樹的根節點為軸線,旋轉一定的角度,使之結構層次分明。三 森林轉換為二...