跳过正文
  1. 文章/
  2. 计算机基础/
  3. 数据结构与算法/
  4. 数据结构/

2、b+树

·682 字·2 分钟· loading · loading · ·
计算机基础 数据结构与算法 数据结构
GradyYoung
作者
GradyYoung
数据结构 - 点击查看当前系列文章
§ 2、b+树 「 当前文章 」

B+树
#

B+树是B树的变种,有着比B树更高的查询效率。

特点
#

  • 一个k阶的B+树具有如下几个特征
    • 有k个子树的中间节点包含有k-1个元素(每个节点最多k-1个元素),每个元素不保存数据,只用来索引,所有数据 都保存在叶子节点。
    • 所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小,自小而大顺序链接。
    • 所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。

4阶B+树
#

1599375486838

因为是4阶B+树,所以每个节点最多可以存储3个元素

每一个父节点都会出现在子节点中,是子节点中最大或者最小的元素

B+树查询
#

image-20210906195713835

除了图中所说的,每个叶子节点都会带有指向下一个叶子节点的指针,形成一个有序链表

在聚集索引(Clustered Index)中,叶子节点直接包含卫星数据,在非聚集索引(Non Clustered Index)中,叶子节点带有指向卫星数据的指针。

B+树插入
#

在B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶节点中,各叶节点用指针连接。因此在进行插入删除操作时,要进行调整,维持其平衡性。

插入过程

1、如果是一个空树,那么创建一个叶子节点,然后将记录插入该叶子节点,插入操作结束

2、如果只有叶子节点,那么会根据key值,找到叶子节点,然后再这个叶子节点中插入记录,如果叶子节点中记录的个数小于等于B+树的阶数-1,那么插入结束;如果大于,就会将这个叶子节点分裂为两个叶子节点,左边的叶子节点包含前阶数/2个记录,右边叶子节点包含剩余的记录,然后将第阶数/2+1个元素进位到父节点,这个父节点的左指针指向左子节点,右指针指向右子节点,插入结束。

数据结构 - 点击查看当前系列文章
§ 2、b+树 「 当前文章 」