森林 樹與二叉樹相互轉換

2021-09-22 21:21:11 字數 962 閱讀 7024

1、森林轉二叉樹

(1)、把每棵樹轉換為二叉樹

(2)、第一棵二叉樹不動,從第二棵二叉樹開始,一次把後一棵二叉樹的根結點作為前一棵二叉樹的根結點的右孩子,用線連線起來。

轉換規則:兄弟相連,長兄為父,孩子靠左。      

2、樹轉二叉樹

(1)、加線。在所有的兄弟結點之間加一條線。

(2)、去線。樹中的每個結點,只保留它與第乙個孩子結點的連線,刪除其他孩子結點之間的連線。

(3)、調整。以樹的根結點為軸心,將整個樹調節一下(第乙個孩子是結點的左孩子,兄弟轉過來的孩子是結點的右孩子)

例如:

3、二叉樹轉樹

(1)、加線。若某結點x的左孩子結點存在,則將這個左孩子的右孩子結點、右孩子的右孩子的右孩子結點。。。都作為結點x的孩子。將結點x與這些右孩子結點用線連線起來。

(2)、去線。刪除原二叉樹中所有結點與其右孩子結點的連線。

(3)、層次調整。

4、二叉樹轉換為森林

前提:   加入一棵二叉樹的根節點有右孩子,則這棵二叉樹能夠轉換為森林,否則轉換為一棵樹。

轉換規則:

(1)、從根節點開始,若右孩子存在,則把與右孩子結點的連線刪除。再檢視分離後的二叉樹,若其根節點的右孩子存在,則連續刪除。直到所有這些根結點與右孩子的連線都刪除為止。

(2)、將每棵分離後的二叉樹轉換為樹。

參考文獻

樹 森林與二叉樹相互轉換

本文參考自 大話資料結構 加線,在所有兄弟結點之間加一條連線 去線。對樹中每個結點,只保留它與第乙個孩子結點的連線,刪除它與其他孩子結點之間的連線 層次調整。以樹的根結點為軸心,將整棵樹順時針旋轉一定的角度,使之結構層次分明。注意第乙個孩子是二叉樹的左孩子,兄弟轉換過來的孩子是結點的右孩子。森林由若...

森林 樹與二叉樹相互轉換

1 森林轉二叉樹 1 把每棵樹轉換為二叉樹 2 第一棵二叉樹不動,從第二棵二叉樹開始,一次把後一棵二叉樹的根結點作為前一棵二叉樹的根結點的右孩子,用線連線起來。轉換規則 兄弟相連,長兄為父,孩子靠左。2 樹轉二叉樹 1 加線。在所有的兄弟結點之間加一條線。2 去線。樹中的每個結點,只保留它與第乙個孩...

森林 樹與二叉樹相互轉換

1 森林轉二叉樹 1 把每棵樹轉換為二叉樹 2 第一棵二叉樹不動,從第二棵二叉樹開始,一次把後一棵二叉樹的根結點作為前一棵二叉樹的根結點的右孩子,用線連線起來。轉換規則 兄弟相連,長兄為父,孩子靠左。2 樹轉二叉樹 1 加線。在所有的兄弟結點之間加一條線。2 去線。樹中的每個結點,只保留它與第乙個孩...