B树的概念:
适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)。
一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。
m阶B树的定义如下:
它或者是空树,或者是满足下列性质的树:
1、根结点至少有两个子女;
2、每个非根节点所包含的关键字个数 j 满足:ceil(m/2) - 1 <= j <= m - 1;
3、除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数 k 满足:(m/2) <= k <= m ;
4、所有的叶子结点都位于同一层。
5、一个结点中的关键字按非降序排列。
在B-树中,每个结点中关键字从小到大排列,并且当该结点的孩子是非叶子结点时,该k-1个关键字正好是k个孩子包含的关键字的值域的分划。
因为叶子结点不包含关键字,所以可以把叶子结点看成在树里实际上并不存在外部结点,指向这些外部结点的指针为空,叶子结点的数目正好等于树中所包含的关键字总个数加1。
B-树中的一个包含n个关键字,n+1个指针的结点的一般形式为: (n,P0,K1,P1,K2,P2,…,Kn,Pn)
其中,Ki为关键字,K1<K2<…<Kn, Pi 是指向包括Ki到Ki+1之间的关键字的子树的指针。
B树的插入与删除操作
1.B树的插入:
2.B树的删除:
未完待续...
来一个真题:
在一棵高度为2的5阶B树中,所含关键字的个数最少为多少?
首先根节点最少可以为1个。
由于该树高度为2,根据定义,根节点至少有两个孩子,所以最少可以为两个孩子,且这两个孩子都是叶子结点。根据定义,对于非根节点,所含关键字个数j满足区间为:[ceil(5/2)-1, 5-1] ,所以最少为ceil(5/2)-1 = 3 - 1 = 2。又由于根节点最少有两个孩子,所以所含关键字的最少为根节点所含关键字加上两个孩子所含的关键字:1 + 2*2 = 5.