目录
红黑树:
为什么要有红黑树?
为了避免二叉查找树升序或降序变成一个单链表的形式,失去了二叉查找树的效率,引入了红黑树,所以红黑树是一种自平衡的二叉查找树
java中HahsMap的底层就是数组+链表+红黑树
n个节点的红黑树的高度是nlgn
- 节点要么红色、要么黑色;
- 根节点和叶子节点是黑色;
- 每个红色节点的孩子都是黑色
- 任意一个节点到叶子的节点的路径中包含相同数量的黑色节点
B树:
为什么要有B树?
为了避免红黑树过深,把一颗细长的树变成矮胖的树,所以B树又叫多路平衡查找树
B树通常使用与文件系统的搜索。
B树中,一个节点的孩子可以有很多,所以存储的索引非常多。
B树中,数据散落在整棵树中。通常经常访问的数据距离根节点更近,这样访问效率高。
B树的中序遍历是有序的。
B+树:
为什么要有B+树?
从B+树的图上来看,B+只有叶子节点才存放数据,所以B+树能存放比B树更多的索引。
B+树的叶子结点之间是互相连接的,如果需要顺序访问或者范围搜索,B+树比B树效率高,因为B树只能通过层层关键字比较。所以B+树更适合MySql的索引机制。