二叉搜索樹(Binary Search Tree)
- 空樹 or
- 左子樹所有節點的值 <= 其根節點的值 <= 右字數所有節點的值 and
- 左右子樹也都是二叉搜索樹
- ❗ 中序遍歷的結果是遞增排序
(強)平衡二叉樹 AVL
- 二叉搜索樹中每個節點的左子樹和右子樹高度之差<=1
- 插入節點不平衡後需要通過旋轉平衡
- ❗ 旋轉很費時間,所以AVL適合插入和刪除操作比較少的情況
- 應用:快速查找
弱平衡二叉樹(紅黑樹)(RBTree)
- 定義:
- 所有節點不是黑色就是紅色
- 根節點必須是 黑色
- 葉子節點必須是 黑色
- 如果一個節點是紅色,那麼它的兩子節點都是黑色
- 對每個結點,從該結點到其子孫結點的所有路徑上包含相同數目的黑結點。
- 性質:從根到葉子的最長的可能路徑不多於最短的可能路徑的兩倍長
- 複雜度:
- 應用:
- STL中的map和set
(未完待續)
B-樹
定義:
- 每個節點最多m個分支
- 根節點(非葉子節點)至少兩個分支
- 非根非葉節點
B+樹