二叉樹的儲存
連續儲存【完全二叉樹】
優點:
查找某個節點的父節點和子節點(也包括沒有數據的節點)
缺點
耗用內存空間過大
鏈式存儲
一般樹的存儲
雙親表示法
求父節點方便
孩子表示法
求子節點方便
雙親孩子表示法
求父節點子節點都方便
二叉樹表示法
把一個普通樹轉換成二叉樹來存儲
具體的轉換方法:
設法保證任意一個節點的
左指針域指向它的第一個孩子
右指針域指向它的下一個兄弟
只要能滿足此條件就能把普通樹轉換成二叉樹
一個普通樹轉換成二叉樹一定沒有右子樹
森林的存儲
先把森林轉換成二叉樹,再儲存二叉樹
操作
遍歷
先序遍歷
先訪問根節點
再先序訪問左子樹
再先序訪問右子樹
中序遍歷
中序遍歷左子樹
再訪問根節點
再中序遍歷右子樹
後續遍歷
後序遍歷左子樹
後續遍歷右子樹
再訪問根節點
已知兩種遍歷序列求原始二叉樹
只有通過 先序和中序 或者 中序和後序 纔可以唯一確定一個二叉樹
1.已知先序和中序求後續
示例:
先序:ABCDEFGH
中序:BDCEAFHG
求後序:DECBHGFA
示例:
先序:ABDGHCEFI
中序:GDHBAECIF
2.已知中序和後序求先序(根據後序找根節點)
應用
樹是數據庫中數據組一種重要形式織
操作系統子父進程的關係本身就是一棵樹
面嚮對象語言的繼承關係本身就是一個樹
赫夫曼樹