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

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

相关推荐
m0_734998013 分钟前
Day 26
数据结构·c++·算法
励志的小陈1 小时前
复杂度算法题——旋转数组(三种思路)
c语言·数据结构·算法
Sirens.1 小时前
对顺序表以及双向链表的理解
数据结构·链表
㓗冽2 小时前
2026.03.27(第三天)
数据结构·c++·算法
七七肆十九2 小时前
PTA 7-38 数列求和-加强版
数据结构·算法
We་ct3 小时前
LeetCode 4. 寻找两个正序数组的中位数:二分优化思路详解
前端·数据结构·算法·leetcode·typescript·二分
计算机安禾4 小时前
【数据结构与算法】第10篇:项目实战:学生信息管理系统(线性表版)
开发语言·数据结构·算法·visual studio
xsyaaaan5 小时前
leetcode-hot100-二叉树
数据结构·leetcode
xiaoye-duck5 小时前
《算法题讲解指南:优选算法-哈希表》--58.存在重复元素I,59.存在重复元素II,60.字母异位词分组
数据结构·c++·哈希算法
SadSunset6 小时前
第四章:Redis 数据结构与命令
数据结构·数据库·redis