樹,森林與二叉樹的轉換

來源:互聯網
上載者:User

標籤:

1.樹轉換為二叉樹

樹中每個節點最多隻有一個最左邊的孩子(長子)和一個右鄰的兄弟 

1)在所有兄弟節點之間加一連線 

2)每個節點,除了保留與其長子之間的連線外,去掉該節點與其它孩子的連線

3)層次調整。以樹根點為軸心,將整棵樹順時針旋轉一定的角度,使之結構層次分明。這樣結點的左孩子還是之前的左孩子,右孩子是之前的兄弟結點


2.森林轉化為二叉樹

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

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


二叉樹轉換為樹

是樹轉換為二叉樹的逆過程。

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

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

(3)層次調整。


二叉樹轉換為森林

假如一棵二叉樹的根節點有右孩子,則這棵二叉樹能夠轉換為森林,否則將轉換為一棵樹。

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

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



樹,森林與二叉樹的轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.