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⌉ 个点)上升为子树根节点(插入到未分裂前的根节点当中),中间点左右两端的点变为中间点的键值所在点的左右子树。若未分裂前的根节点被插入后满了,继续重复该操作

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

相关推荐
ohyeah3 小时前
栈:那个“先进后出”的小可爱,其实超好用!
前端·数据结构
历程里程碑5 小时前
各种排序法大全
c语言·数据结构·笔记·算法·排序算法
embrace996 小时前
【C语言学习】结构体详解
android·c语言·开发语言·数据结构·学习·算法·青少年编程
稚辉君.MCA_P8_Java6 小时前
通义 Go 语言实现的插入排序(Insertion Sort)
数据结构·后端·算法·架构·golang
稚辉君.MCA_P8_Java7 小时前
Gemini永久会员 Go 实现动态规划
数据结构·后端·算法·golang·动态规划
腾讯云开发者7 小时前
数据与 AI 双向奔赴,腾讯云架构师技术沙龙精彩回顾
数据结构
xiaoxue..8 小时前
栈的全面解析:ADT、实现与应用
javascript·数据结构·面试
哭泣方源炼蛊8 小时前
HAUE 新生周赛(七)题解
数据结构·c++·算法
小此方9 小时前
从零开始手搓堆:核心操作实现 + 堆排序 + TopK 算法+ 向上调整 vs 向下调整建堆的时间复杂度严密证明!
开发语言·数据结构·算法
前端炒粉12 小时前
35.LRU 缓存
开发语言·javascript·数据结构·算法·缓存·js