B树的性质和插入过程

性质

  1. 平衡性:所有叶子节点都在同一层
  2. 多路 :m 阶 B 树
    最多: m 个分支,m-1 个元素
    最少: 根节点 2 个分支 1个元素
    其他节点 ⌈ m / 2 ⌉ \lceil m/2\rceil ⌈m/2⌉ 个分支 ⌈ m / 2 ⌉ \lceil m/2\rceil ⌈m/2⌉ − 1 -1 −1 个元素
  3. 有序:结点内有序,左子树<根<右子树

插入过程

  1. 定位插入点:从根节点开始,逐层向下遍历B树,找到要插入的键值应该插入的位置。

  2. 在插入点插入后,检查叶子节点是否已满。如果已满,则需要进行分裂操作。

  3. 分裂操作:如果叶子节点已满(m 个点即满),将其分裂。中间的点(第 ⌈ m / 2 ⌉ \lceil m/2\rceil ⌈m/2⌉ 个点)上升为子树根节点(插入到未分裂前的根节点当中),中间点左右两端的点变为中间点的键值所在点的左右子树。若未分裂前的根节点被插入后满了,继续重复该操作

是 否 定位插入点 是否已满 分裂操作 正常插入操作

相关推荐
从小白到软工24 分钟前
4-3 项目-学生成绩管理系统(上)
c语言·开发语言·数据结构·经验分享·ai编程
悠仁さん27 分钟前
非类型模板参数的特化与偏特化
java·数据结构·算法
haluhalu.1 小时前
深入理解 AI Agent(1.2):Harness 工程——模型之外的竞争力
前端·数据结构·人工智能·python·langchain·个人开发
垆边人似月.1 小时前
幻兽防御战(贪心算法)
数据结构·算法
Cccp.1233 小时前
【leetcode】(十三)大数据处理
数据结构·算法·leetcode
Pniubi3 小时前
力扣70爬楼梯
数据结构·算法·leetcode
雪落漂泊5 小时前
C++算法:双指针篇(下)
数据结构·c++·算法
学逆向的15 小时前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
jeo陽19 小时前
04-循环实战:素数、最大公约数、级数求和与枚举法
c语言·开发语言·数据结构
slandarer20 小时前
MATLAB | 趣味编程——动态字符串甜甜圈和爱心
数据结构·matlab·趣味编程