樹與二叉樹的轉換、樹的遍歷
阿新 • • 發佈:2019-02-04
樹和二叉樹不同,可以有0到n個孩子,所以實現起來很麻煩,但我們可以藉助樹的孩子兄弟表示法把樹轉換成二叉樹。
在孩子兄弟表示法中,某個結點的第一個孩子結點的指標是二叉樹中其左孩子結點指標,右兄弟結點指標是二叉樹中右孩子結點指標。
樹轉換為二叉樹過程:
(1)樹中所有相同雙親結點的兄弟結點之間加一條連線;
(2)對樹中不是雙親結點的第一個孩子的結點,只保留新新增的該結點與左兄弟結點之間的連線,刪去該結點與雙親結點之間的連線;
(3)整理所有保留的連線,根據連線擺放成二叉樹的結構,轉換完成。
二叉樹還原為樹過程:
(1)若某結點是其雙親結點的左孩子,則把該結點的右孩子,右孩子的右孩子······都與該結點的雙親結點用線連起來;
(2)刪除原二叉樹中所有雙親結點與右孩子結點的連線;
(3)整理所有保留的連線,根據連線擺放成樹的結構,轉換完成。
樹的遍歷:
主要有先根遍歷和後根遍歷兩種,先根遍歷序列一定和該樹轉換的二叉樹的前序遍歷序列相同;後根遍歷序列一定和該樹轉換的二叉樹的中序遍歷序列相同。
先根遍歷過程:
(1)訪問根結點;
(2)按照從左到右的次序先根遍歷根結點的每一棵樹。
後根遍歷過程:
(1)按照從左到右的次序後根遍歷根結點的每一棵子樹;
(2)訪問根結點。
圖中先根遍歷序列為:ABEJFCGKLDHI後根遍歷序列為:JEFBKLGCHIDA