1.什么是B树
B树又称为多路平衡查找树,B树中所有结点的孩子节点数的最大值称为B树的阶,通常用m表示。
2.B树的特性
一颗m阶B树或为空树,或为满足如下特性的m叉树:
1)树中每个结点至多有M棵子树(即至多含有m-1个关键字)。
2)若根节点不是终端结点,则至少有两颗子树。
3)除根节点外的所有非叶子结点至少有Math.ceil(m/2)棵子树(即至少含有Math.ceil(m-2)-1个关键字)。
4)所有的叶子结点都出现在同一层次上,并且不带信息。
3.B树的插入
【经典例题】将依次20,30,50,52,60插入3阶B数。
第一步:
第二步:
第三步:
第四步:
第五步:
4.B数的删除
当删除的k值不是叶子时,有下列几种情况:
1)若左子树中的关键字个数>Math.ceil(m/2)-1,则找前驱替代,再删除k。
2)若右子树中的关键字个数>Math.ceil(m/2)-1,则找后继替代,再删除k。
3)若左右子树中的关键字个数=Math.ceil(m/2)-1,两子树合并,再删除k。
当删除的k值是叶子时,有下列几种情况:
1)若所在的结点关键字个数>Math.ceil(m/2)-1,直接删。
2)若所在的结点关键字个数=Math.ceil(m/2)-1且兄弟结点的个数≥Math.ceil(m/2),父子换位法。
3)若所在结点的关键字个数=Math.ceil(m/2)-1且兄弟结点的个数=Math.ceil(m/2)-1,父子合并法。
5.经典例题
【经典例题】对如下图所示的3阶B树,依次执行下列操作,画出各步操作的结果。
(1)插入90
(2)插入25
(3)插入45
(4)删除60
(5)删除80
【解】
答案(1)
答案(2)
答案(3)
答案(4)
答案(5)