數據結構--樹
阿新 • • 發佈:2017-09-23
鏈式 底層 nbsp src one pan 方法 分享 完全二叉樹
1、樹的一些定義
1.1 樹
有且只有一個稱為根的節點;
有若幹個互不相交的子樹,這些子樹本身也是一棵樹。
1.2 深度
從根節點到最底層節點的層數成為深度,根節點是第一層。
1.3 度
最大子節點的個數稱之為度。
2、樹分類
2.1 一般樹
任意一個節點的子節點的個數都不受限制
2.2 二叉樹
任意一個節點的子節點個數最多兩個,且子節點的位置不可更改。
分類
一般二叉樹
滿二叉樹
在不增加樹深度的情況下,無法再添加一個節點的二叉樹是滿二叉樹。
完全二叉樹
如果只刪除了最底層最右邊的連續若幹個節點,這樣形成的二叉樹就是完全二叉樹。
2.3 森林
n個互不相交的樹的集合
3、樹的存儲
3.1 二叉樹的存儲
連續存儲
優點:
查找某個節點的父節點和子節點
缺點
耗用內存空
鏈式存儲
3.2 一般樹的存儲
雙親表示法
求父節點方便
孩子表示法
求子節點方便
雙親孩子表示法
求父節點和子節點都很方便
二叉樹表示法
把一個普通樹轉換為二叉樹來存儲
具體方法:
設法保證任意一個節點的左指針域向它的第一個孩子,右指針域指向它的堂兄弟,只要滿足此條件,就可以把一個普通樹轉化為二叉樹。
3.3 森林的存儲
先把森林轉化為二叉樹,再存儲二叉樹。
4、樹操作
4.1 先序遍歷
- 先訪問根節點
- 再先序訪問左子樹
- 再先序訪問右子樹
4.2 中序遍歷
- 先中序訪問左子樹
- 再訪問根節點
- 再中序訪問右子樹
4.3 後續遍歷
- 先後序訪問左子樹
- 再後序訪問右節點
- 再訪問根節點
數據結構--樹