【数据结构】m阶B树的特点、插入 和 删除

您所在的位置:网站首页 b树查找代码 【数据结构】m阶B树的特点、插入 和 删除

【数据结构】m阶B树的特点、插入 和 删除

2024-01-17 23:32| 来源: 网络整理| 查看: 265

预备知识:你需要知道什么是二叉搜索树。

一、m 阶 B 树的特点

在严蔚敏的《数据结构》一书中,说“一棵m阶的B树,或为空树,或为满足下列特征的m叉数。如下:

1、每个节点至多有m个子树,也就时一个节点至多有m-1个关键字 怎么理解这句话呢,我们并不能根据一个叉树的节点中的关键字的个数来判断该树的阶数。如果你是自学,或者很久之前学过,那么你可能会不理解这就话的含义。

也就是说一棵树的阶数不是由树本身决定的,而是由外部规定的,如下图: 在这里插入图片描述 我们并不能判断上树是几阶B书,因为我们并不知道“2”是不是最多,如果给出说明:该树的节点中最多有两个关键字,那么我们可以有底气的回答该树是3阶B树。但是因为没有给出最多的定义,所以我们不能确定是几阶B树。

2、若根节点不是终端节点,那么至少有两颗子树 如何根节点不是终端节点,那么意味着根节点至少有一个关键字,也就说明根节点至少有2棵子树。

3、除根节点以外的所有非叶子节点至少有m/2取上界棵子树,及至少含有m/2取上界-1个关键字。 如果我们已知B树的阶数,那么我们可以确定其除根节点以外的所有非叶子节点中的关键字个数的下界。但是仅仅是下界而已。如下图: 在这里插入图片描述 我们可以看到该树的除根节点以外的所有非叶子节点中的关键字个数最多有2个,这也就意味值其阶数至少是5阶。但是并不能确定其具体是几阶。

4、所有非叶子节点中的关键字是顺序排列的,且非叶子节点的子树总比关键字多1。

二、m 阶 B 树的插入

先了解外部节点和内部节点概念: 在这里插入图片描述

B树的插入都是在内部节点的最后一层节点中插入的,和二叉搜索树的插入方式类似。

核心原理(一颗3阶B树): ① 若向某一个节点中插入一个关键字之后,该节点中关键字的个数 < m,那么该节点插入完成。 在这里插入图片描述

② 若向某一个节点中插入一个关键字之后,导致该节点中关键字的个数 = m,那么我们需要提取该节点中m/2取上界处的关键字到其父节点中,并顺势将该节点分为两颗子树,作为m/2取上界处的关键字的左右子树。 在这里插入图片描述

三、m 阶 B 树的删除

先了解外部节点和内部节点概念: 在这里插入图片描述 B树的插入都是在内部节点的最后一层节点中插入的,和二叉搜索树的插入方式类似。

了解一个概念:终端节点,所谓的终端节点是指内部节点中的最下层节点。

B树节点的删除分为两大部分:被删除节点在终端节点上和被删除节点不在终端节点上。

1、当删除的关键字K不在终端节点上时

当删除的关键字K不在终端节点上时,可以用K的前驱或后继M来取代K,这样就相当于删除了K。 如下:以三阶B树为例。 在这里插入图片描述

2、当被删除关键字在终端节点上时,有三种情况

① 直接删除关键字。如果说该关键字被删除之后所在节点的关键字仍然满足>=m/2取上界。如下:以三阶B树为例。 在这里插入图片描述

② 需要向兄弟节点借一个关键字。当某一个关键字被删除后,导致该节点的关键字个数=m/2取上界。那么需要向兄弟节点借一个关键字。如下:以三阶B树为例。 在这里插入图片描述

总结:被删除关键字K需要借后继关键字M,后继关键字M需要借后继关键字N。

③ 兄弟不够借。如果被删除的关键字K的兄弟节点不满足②中的描述。那么将K删除后,剩余关键字、兄弟节点和双亲节点中的一个关键字需要合并。 在这里插入图片描述

✈ ❀ 希望平凡の我,可以给你不凡の体验 ☂ ✿ ,白嫖有罪 ☠ ,记得关注哦 ❥(^_-) 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3