多路平衡查找树 --- B(B-)树

本文详细介绍了B树的数据结构特性,包括每个节点最多有M个孩子,关键字的排序规则,以及叶子节点的位置。重点阐述了B树的插入操作步骤,如找到对应叶子节点、节点分裂等,并通过5阶B树的例子演示了插入过程。同时,讨论了删除操作,包括查找、替换、节点合并等步骤,以确保B树性质的保持。

1 简介

可以用阶数来描述B树, 一棵M阶B树代表着该B树最多有M个孩子节点. 如果M为2, 那么该B树就是一棵二叉搜索树. 一棵M阶B树具有以下性质:

1. 每个节点最多有M - 1个关键字. 跟普通的树不同, B树的关键字有多个.

2. 根节点最少可以只有一个关键字.

3. 非根节点至少有k个关键字, 这里的k是指ceil(M / 2) - 1.(这里面的ceil是指大于等于参数的最小整数, 从下面插入操作分析可知, 叶子节点都是由父节点分裂而来, 而分裂的条件就是分裂前节点总数已经达到了M)

4. 每个节点中的关键字都按照从小到大的顺序排列, 每个关键字在左子树中的所有关键字都小于它本身的关键字, 右子树的都大于它本身关键字.

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

2 插入操作

一棵M阶树的插入操作可以总结为以下步骤:

1. 根据要插入的key的值, 找到对应的叶子节点(一定要注意是叶子节点)

2. 如果被插入后的节点的key总数达到了M, 就需要对该节点, 按照key序列的中间左右分开进行分裂, 中间的key插入其父节点.

3. 对父节点进行第二步检查.

下面以一棵5阶B树的插入操作举例:

1. 首先插入39, 22, 97, 41:

2.  插入39, 节点总key数量达到了5, 进行分裂:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值