【数据结构】m阶B树的特点、插入 和 删除 |
您所在的位置:网站首页 › b树查找代码 › 【数据结构】m阶B树的特点、插入 和 删除 |
预备知识:你需要知道什么是二叉搜索树。 一、m 阶 B 树的特点在严蔚敏的《数据结构》一书中,说“一棵m阶的B树,或为空树,或为满足下列特征的m叉数。如下: 1、每个节点至多有m个子树,也就时一个节点至多有m-1个关键字 怎么理解这句话呢,我们并不能根据一个叉树的节点中的关键字的个数来判断该树的阶数。如果你是自学,或者很久之前学过,那么你可能会不理解这就话的含义。 也就是说一棵树的阶数不是由树本身决定的,而是由外部规定的,如下图: 2、若根节点不是终端节点,那么至少有两颗子树 如何根节点不是终端节点,那么意味着根节点至少有一个关键字,也就说明根节点至少有2棵子树。 3、除根节点以外的所有非叶子节点至少有m/2取上界棵子树,及至少含有m/2取上界-1个关键字。 如果我们已知B树的阶数,那么我们可以确定其除根节点以外的所有非叶子节点中的关键字个数的下界。但是仅仅是下界而已。如下图: 4、所有非叶子节点中的关键字是顺序排列的,且非叶子节点的子树总比关键字多1。 二、m 阶 B 树的插入先了解外部节点和内部节点概念: B树的插入都是在内部节点的最后一层节点中插入的,和二叉搜索树的插入方式类似。 核心原理(一颗3阶B树): ① 若向某一个节点中插入一个关键字之后,该节点中关键字的个数 < m,那么该节点插入完成。 ② 若向某一个节点中插入一个关键字之后,导致该节点中关键字的个数 = m,那么我们需要提取该节点中m/2取上界处的关键字到其父节点中,并顺势将该节点分为两颗子树,作为m/2取上界处的关键字的左右子树。 先了解外部节点和内部节点概念: 了解一个概念:终端节点,所谓的终端节点是指内部节点中的最下层节点。 B树节点的删除分为两大部分:被删除节点在终端节点上和被删除节点不在终端节点上。 1、当删除的关键字K不在终端节点上时当删除的关键字K不在终端节点上时,可以用K的前驱或后继M来取代K,这样就相当于删除了K。 如下:以三阶B树为例。 ① 直接删除关键字。如果说该关键字被删除之后所在节点的关键字仍然满足>=m/2取上界。如下:以三阶B树为例。 ② 需要向兄弟节点借一个关键字。当某一个关键字被删除后,导致该节点的关键字个数=m/2取上界。那么需要向兄弟节点借一个关键字。如下:以三阶B树为例。 总结:被删除关键字K需要借后继关键字M,后继关键字M需要借后继关键字N。 ③ 兄弟不够借。如果被删除的关键字K的兄弟节点不满足②中的描述。那么将K删除后,剩余关键字、兄弟节点和双亲节点中的一个关键字需要合并。 ✈ ❀ 希望平凡の我,可以给你不凡の体验 ☂ ✿ ,白嫖有罪 ☠ ,记得关注哦 ❥(^_-) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |