1. 程式人生 > >樹和二叉樹的轉換

樹和二叉樹的轉換

樹和二叉樹是兩種不同的資料結構,樹實現起來比較麻煩,但是樹可以轉換為二叉樹進行處理,處理完以後再從二叉樹還原為樹。
下面說說轉換的方法:
1. 樹轉換為二叉樹
(1) 樹中所有相同雙親結點的兄弟結點之間加一條連線。
(2) 對樹中不是雙親結點第一個孩子的結點,只保留新新增的該結點與左兄弟結點之間的連線,刪去該結點與雙親結點之間的連線。
(3) 整理所有保留的和新增的連線,使每個結點的第一個孩子結點連線位於左孩子指標位置,使每個結點的右兄弟結點連線位於右孩子指標位置。
如下是樹轉換為二叉樹的過程示例圖:
樹轉二叉樹

2.二叉樹還原為樹
(1) 若某結點是其雙親結點的左孩子,則把該結點的右孩子、右孩子的右孩子……都與該結點的雙親結點用線連起來。
(2) 刪除原二叉樹中所有雙親結點與右孩子結點的連線。
(3) 整理所有保留的和新增的連線,使每個結點的所有孩子結點位於相同層次高度。
如下是二叉樹還原為樹的過程示意圖:
二叉樹還原為樹


(由於我自己太懶了,圖沒有自己畫,以上圖片來自百度圖片搜尋)