B树的性质和查找、插入、删除操作

m阶B树的性质:

  1. 一个节点最多有m棵子树(也就是m个子节点),非根节点最少 棵子树,根节点最少2棵子树

  2. 一个节点最多存放 m-1 个数据

  3. 顺序性:中序遍历序列是有序的;每个节点中的数据要有序排放。

  4. 所有的叶子节点都在同一层(绝对平衡)

  5. 终端节点:内部节点的最后一层 称为终端节点,终端节点的孩子就是外部节点(叶子节点null)

B树的操作:查找 插入 删除

查找:类似BST的查找

插入:

法一:插入到终端节点,若满了就分裂节点,被分裂节点的第个数据传给父节点。若此时父节点也满了就继续分裂并上传。根节点满了也分裂并上传,产生一个新的根节点。

法二:在被插入数据往下查找的过程中,发现哪个节点满了,就主动分裂。

删除关键字k:

1)查找k所在的位置x节点

2)若x是非终端节点,找k的中序遍历后继数据k1及k1所在的节点x1,k1替换k,问题转化为在x1节点中删除k1;

若x是终端节点:

a)x中删除k,x中关键字个数>=下限,结束

b)兄弟够借:至少有一个兄弟的关键字个数>下限,找这个兄弟借一个关键字。借关键字的过程:将父亲节点中的关键字下移给x,兄弟中借的关键字给父亲。

c)兄弟不够借:两个兄弟关键字个数=下限。此时,合并一个兄弟,合并时把父亲中的一个对应关键字也一起合并。父亲少一个关键字,在对父亲执行判断调整

相关推荐
Darling噜啦啦3 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
小小工匠4 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾4 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
Qres8214 天前
算法复键——树状数组
数据结构·算法
牛油果子哥q5 天前
并查集(DSU)超精讲,路径压缩、按秩合并、万能模板、连通性判定、最小生成树与刷题实战全解
数据结构·c++·最小生成树·并查集
凌波粒5 天前
LeetCode--491.递增子序列(回溯算法)
数据结构·算法·leetcode
WL学习笔记5 天前
单项不带头不循环链表
数据结构·链表
小糯米6015 天前
JS 数组
数据结构·算法·排序算法
小欣加油5 天前
leetcode3612 用特殊操作处理字符串I
数据结构·c++·算法·leetcode·职场和发展
凌波粒5 天前
LeetCode--90.子集II(回溯算法)
数据结构·算法·leetcode