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

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

相关推荐
菜鸟233号27 分钟前
力扣78 子集 java实现
java·数据结构·算法·leetcode
Han.miracle32 分钟前
数据结构与算法--008四数之和 与经典子数组 / 子串问题解析
数据结构·算法
AI科技星1 小时前
圆柱螺旋运动方程的一步步求导与实验数据验证
开发语言·数据结构·经验分享·线性代数·算法·数学建模
月明长歌1 小时前
【码道初阶】【Leetcode94&144&145】二叉树的前中后序遍历(非递归版):显式调用栈的优雅实现
java·数据结构·windows·算法·leetcode·二叉树
iAkuya2 小时前
(leetcode) 力扣100 15轮转数组(环状替代)
数据结构·算法·leetcode
wanghowie2 小时前
01.02 Java基础篇|核心数据结构速查
java·开发语言·数据结构
C雨后彩虹3 小时前
斗地主之顺子
java·数据结构·算法·华为·面试
墨上烟雨3 小时前
Pandas 数据结构 - Series
数据结构·pandas
蒙奇D索大3 小时前
【数据结构】考研408 | 平方探测法精讲:跳跃探查的艺术与聚集迷思
数据结构·笔记·考研·改行学it
无限进步_4 小时前
【C语言】队列(Queue)数据结构的实现与分析
c语言·开发语言·数据结构·c++·算法·链表·visual studio