二叉树
- 每个节点最多拥有两个子节点
- 每个节点最多有一个父节点
- 只有一个根节点
- 遍历
- 前序遍历
- 中序遍历
- 后序遍历
- 层次遍历
搜索二叉树(有序二叉树)
- 左边比根小
- 右边比根大
- 查找时间 最优 Ologn ~ On 不太稳定
平衡二叉树
- 旋转 如何旋转 如何平衡
- 最小不平衡子树
- LL型
- LR型
- 任何一个节点 左右子树高度差不超过1
- RR型
- RL型
红黑树
- 近似的平衡二叉查找树
- 要么是红的要么是黑的
- 叶子节点nil节点是黑的
- 根节点是黑的 心是一个黑心呀
- 节点会变色
- 红色节点的子节点一定是黑的 不能两个连续的红色节点
- 任意一个节点 到任何一个叶子的路径 是具有相同数目的黑色节点的
多叉树
b-树(b树或b杠树,而不是b减树)
1.关键字集合分布在整颗树中;
2.任何一个关键字出现且只出现在一个结点中;
3.搜索有可能在非叶子结点结束;
4.其搜索性能等价于在关键字全集内做一次二分查找;
5.自动层次控制;
b+树
- mysql的底层实现 存储结构
1.所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好
是有序的;
2.不可能在非叶子结点命中;
3.非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储
(关键字)数据的数据层;
4.更适合文件索引系统;
b*树
是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针;