二叉搜索树(Binary Search Tree)
- 空树 or
- 左子树所有节点的值 <= 其根节点的值 <= 右字数所有节点的值 and
- 左右子树也都是二叉搜索树
- ❗ 中序遍历的结果是递增排序
(强)平衡二叉树 AVL
- 二叉搜索树中每个节点的左子树和右子树高度之差<=1
- 插入节点不平衡后需要通过旋转平衡
- ❗ 旋转很费时间,所以AVL适合插入和删除操作比较少的情况
- 应用:快速查找
弱平衡二叉树(红黑树)(RBTree)
- 定义:
- 所有节点不是黑色就是红色
- 根节点必须是 黑色
- 叶子节点必须是 黑色
- 如果一个节点是红色,那么它的两子节点都是黑色
- 对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。
- 性质:从根到叶子的最长的可能路径不多于最短的可能路径的两倍长
- 复杂度:
- 应用:
- STL中的map和set
(未完待续)
B-树
定义:
- 每个节点最多m个分支
- 根节点(非叶子节点)至少两个分支
- 非根非叶节点