知识准备
在总结B树和B+树插入和删除的过程之前,首先要明确一下B树和B+树的几个性质:
- 对于B树和B+树的根节点都至少有一个根节点;
- 对于B树和B+树的非根节点元素,每个节点中的关键字的个数的范围为:(假设一个m阶的B/B+树)[m/2,m-1]。(闭区间)
- 对于每个节点中的关键字都按照升序进行排列。
- 对于B树,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。
- 对于B树,所有叶子结点都位于同一层,或者说根结点到每个叶子结点的长度都相同。
除此之外B+树还有如下性质:
-
B+树包含2种类型的结点:内部结点(也称索引结点)和叶子结点。根结点本身即可以是内部结点,也可以是叶子结点。根结点的关键字个数最少可以只有1个。
-
B+树与B树最大的不同是内部结点不保存数据,只用于索引,所有数据(或者说记录)都保存在叶子结点中。
-
m阶B+树表示了内部结点最多有m-1个关键字(或者说内部结点最多有m个子树),阶数m同时限制了叶子结点最多存储m-1个记录。
-
内部结点中的key都按照从小到大的顺序排列,对于内部结点中的一个key,左树中的所有key都小于它,右子树中的key都大于等于它。叶子结点中的记录也按照key的大小排列。
-
每个叶子结点都存有相邻叶子结点