B+树的插入和删除过程

前言

上一篇已经详细的介绍了什么是B树,但B树这种结构仍有不足之处,比如对范围检索就比较费劲,所以科学大佬们就继续改造扩展,在B树的基础上发明了B+树,上篇文章中也简单提到过B+树,本篇我们就来详细的学习一下。

B+树的结构定义

首先B+树是B树的一种扩展,在B+树里面,非叶子节点不再存储数据,仅仅存在索引,而叶子这点存储具体的数据,并且最底层的数据直接之间从做到右是按照从小到大的顺序分布,并且是一个双链表的结构。也就是说的所有的关键码均出现在叶节点上,各层节点中的关键码均是下一层相应节点中的最大或者最小的关键码的复写。

m阶B+树的结构定义如下:

(1)每个节点最多有m个子节点

(2)除根节点外,每个节点至少有m/2个子节点,注意如果结果除不尽,就向上取整,比如5/2=3。

(3)根节点要么是空,要么是独根,否则至少有2个子节点

(4)有k个子节点的节点必有k个关键码

(5)叶节点的高度一致

我们看下面的图对比下B树和B+树:

B树的结构:

B+树的插入和删除过程_第1张图片

B+树的结构:

B+树的插入和删除过程_第2张图片

注意B+树的几个特点,父节点的关键码有几个,下面就有多少个子节点,并且父节点里面的关键码在子节点或者是子树里面的值总是最大或者最小,这些特点与B树不同,不要搞混淆,B树里面含k个关键码的父节点,有k+1的子节点,B树里面的关键码起到分割界限的作用,每个关键码并不都是子树里面最大的值,这一点要特别注意,网上很多关于B+树的图示,其实都是B树的图片,但实际上他们两者是不一样的。

下图是一个2阶B+树的例子:

你可能感兴趣的:(数据库,链表)