B树概念

215 阅读2分钟

一、为什么要有B树

查找速率比较高。
CPU速度>>内存速度>>磁盘速度
硬盘有一个特点,读取含有多个数据的节点和单个数据的节点耗时是一样的。

二、B树(又称B-树)

B-树,又称多路平衡查找树。

1. m阶B树定义如下:

1)每个节点最多m-1个关键字  
2)根结点最少可以只有1个关键字  
3)非根节点至少有cell(m/2)-1个关键字  
4)每个节点中的关键字都按照从小到大的顺序排列,每个关键字的左子树的所有关键字都小于它,而右子树中的所有关键字大于它。  
  

image.png

image.png

叶子节点的称呼比较不一样,这里是内部节点最后一层为叶子节点。有些地方时以外部节点为叶子节点。 image.png

image.png

2. B树的插入

B树的插入一般有2种方法。一种回溯法,另一种主动插入法。 这里讲的是回溯法。

2.1回溯法插入

[B树画图链接](B-Tree Visualization)
口诀:溢出,分裂,上移。(上移的是中间元素)

插入的元素:2、 4、 1、 6、 67

插入1后,不满足m-1的定义,溢出了。所以,2与1和4分裂,中间的2上移。
image.png

插入6,6大于2,6小于4,所以放进了4的右边,且满足m-1的定义。
image.png

image.png

image.png

插入67后,不满足m-1的定义,溢出了。所以,6与4和67分裂,中间的6大于2,则上移到2的右边。
image.png

3.B树的删除 (所有非叶子节点都会替换成叶子节点删除)

3.1删除叶子节点无下溢出

直接删除。

3.2下溢出

当键数小于最小值,则向其兄弟节点借元素。即其父节点元素下移至当前节点,将兄弟节点中元素上移至父节点(若是左节点,上移最大元素;若是右节点,上移最小元素)
若兄弟节点也达下限,则合并兄弟节点与分割键。