數據結構——樹、森林和二叉樹之間的轉換


樹轉換二叉樹

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

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

(3)層次調整。以樹的根節點為軸心,將整棵樹順時針旋轉一定角度,使之結構層次分明。(注意第一個孩子是結點的左孩子,兄弟轉換過來的孩子是結點的右孩子)

口訣:兄弟相連,長兄為父,孩子靠左。

核心:左孩子,右兄弟                   

森林轉換二叉樹

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

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

二叉樹轉樹

是樹轉換為二叉樹的逆過程。還原結點A的孩子,結點A的左孩子開始,一直向右走,這些結點就是結點A的孩子,遇見順序就是它們作為結點A孩子的順序。

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

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

(3)層次調整。

 

二叉樹轉森林

假如一棵二叉樹的根結點有右孩子,則這棵二叉樹能夠轉換為森林,否則將轉換為一棵樹。在二叉樹種A有右子樹上向右的一連串結點都是A的兄弟,那么就把兄弟分離,A的每個兄弟結點作為森林中樹的根結點。

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM