B树 插入 删除 图文 代码实现 golang实现

本文详细介绍了B树的概念、性质,并通过Golang代码展示了B树的插入和删除操作。讨论了不同情况下如何保持B树的平衡,包括节点分裂、关键字下移和兄弟节点合并等策略。
摘要由CSDN通过智能技术生成

一、B树的定义
B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数。当m取2时,就是我们常见的二叉搜索树。
一颗m阶的B树定义如下:
1、每个结点最多有m-1个关键字。
2、根结点最少可以只有1个关键字。
3、非根结点至少有Math.ceil(m/2)-1个关键字。
4、每个结点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。

5、所有叶子结点都位于同一层,或者说根结点到每个叶子结点的长度都相同。

二、B树的插入操作
插入操作是指插入一个关键字(也可以是一个复杂的自定义结构体)。如果B树中已存在需要插入的关键字,则不再插入。若B树不存在这个关键字,则一定是在叶子结点中进行插入操作。
1、根据要插入的关键字的值,找到叶子结点并插入。
2、判断当前结点关键字的个数是否小于等于m-1,若满足则结束,否则进行第3步。
3、以结点中间的关键字为中心分裂成左右两部分,然后将这个中间的关键字插入到父结点中,这个关键字的左子树指向分裂后的左半部分,这个关键字的右子支指向分裂后的右半部分,然后将当前结点指向父结点,继续进行第3步。
下面以4阶B树为例,介绍B树的插入操作,在4阶B树中,结点最多有3个关键字,最少有1个key关键字

1)在空树中插入38

2)继续插入21,40。此时关键字该个数仍小于小于等于m-1


3)继续插入96
插入后超过了最大允许的关键字个数3,所以以关键字值为40(中间节点38,40都可以)为中心进行分裂,结果如下图所示,分裂后当前结点指针指向父结点,满足B树条件,插入操作结束。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值