B树:
多路查找树,对于m阶的B树来说:
1. 根节点如果不是叶子节点至少有2个关键字,除根节点外的节点,至少含有m/2向上取整个关键字,不多于m-1个关键字。每个节点最多有m个子节点。
2. 内部节点含有k个有序的关键字,叶子节点不包含任何信息,指向这些叶子节点的指针都为NULL,且所有叶子节点在同一行。
3. n个节点的B树高度是logm/2((n+1)/2)。
B+树:
是B树的变形
在数据库的实现中,多用B+树,因为B+树查找磁盘代价更低,中间的索引占的内存小,并且查找效率更加稳定,因为所有关键字的信息都在叶子节点上,所有的查找最后都是在叶子节点结束,而B树中间节点就可能退出。
1. 所有关键信息都在叶子节点上,并且有指向关键字的指针,内部节点只是索引。
并且叶子节点中的数据时有序排放的。
B*树:
B*树中间节点增加指向兄弟的指针;B*树定义了非叶子结点关键字个数至少为(2/3)*M,即块的最低使用率为2/3(代替B+树的1/2)。
三、红黑树
是一种二叉查找树,但是每个节点增加一个存储位来表示结点的颜色。
- 每个结点要么是红的要么是黑的。
- 根结点是黑的。
- 每个叶结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的。
- 如果一个结点是红的,那么它的两个儿子都是黑的。
- 对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点。
正是红黑树的这5条性质,使一棵n个结点的红黑树始终保持了logn的高度,从而也就解释了上面所说的“红黑树的查找、插入、删除的时间复杂度最坏为O(log n)”这一结论成立的原因。