说到b树 可能很多人心里没点b树 就是说 不知道这b树到底是啥b
认识一个事物从他的名字开始
B-tree 这里的“B”代表的是Balanced 表示平衡
所以b树其实就是平衡树
平衡二叉树就是最典型 的平衡 没有学到平衡二叉树的朋友 可以移步到这里->啥b都能学明白的平衡二叉树
这里平衡就是指 最高子树的高度 -最矮子树的高度 <2
也就是 不能差太多嘛 核心的思想就是 所有子树高度差不多
我们把他的核心思想记住 再看二叉平衡树中的“二” 凭什么只能是这个数字呢 ?为什么不能三叉 四叉 五仰八叉...
把平衡二叉树的核心思想再增强一个档次 绝对平衡 ---所有子树 必须一样高
然后再把“二”泛化 就得到了B树
学过Java的朋友这时候肯定能跳起来说“哦~!用Java的角度理解就是 b树其实就是二叉平衡树的抽象类 二叉树其实是b树这个抽象类的其中一种具体实现类 还有很多其他3叉平衡树 、四叉五叉等等都是b树的实现类 ”
有了具体实现类 咱理解b树的抽象规则 那不就简单多了 何必在王道书上每条性质在做阅读理解?
我们通常将二叉、三叉、五叉这里的数字称之为阶数 五叉平衡树 就是五阶b树
那么抽象 来说就是m阶平衡树
m阶 最多m路呗 这一点肉眼可见
再来观察上图小细节 哦其实每一坨椭圆是结点 结点当中使用了若干个关键字(里边装着的数字) 使用关键字 把路径分成了m条路径 这里用数学的区间就好理解了
这里面每一个结点当中的每个关键字就是x轴上的分段点 分段点左边比分点小 反之 右边比分段点大 左小右大呗 这一点和平衡二叉树一样
值得注意的是 非叶结点中被划分的是指向下一个结点的指针 而叶节点下面被划分的是指向具体的值的指针
他是如何维持平衡的?
节点键值数量:每个节点最多可以有m-1个关键字,其中m是树的阶(最小度数)。这意味着每个节点最多有m个子节点。
通过限制每个节点的键值数量,B树能够保持每个节点的负载大致相同,这有助于平衡树的结构,避免某些节点过载而其他节点空闲。
根节点至少有2个子节点(在非空B树中):这样可以保证树的根节点不会过于倾斜。
内部节点至少有⌈m/2⌉-1个键值:保证树的深度不会过浅。
叶子节点都在同一层:保持树的高度一致。
节点键值和子节点指针一一对应:每个键值对应一个子节点指针,形成了有序的键值索引。
删后 右边的最左下角 82来替补!
他的本质 实际上就是在不断的匹配不等式 要求在删除以后 满足原先不等式的性质!
B树的插入与删除操作都需要精心设计以保持树的平衡。插入操作通过分裂节点来处理节点过载,而删除操作通过合并节点来处理节点欠载。这些操作确保了B树的高度保持在对数级别,从而保证了操作的时间复杂度为O(log n)。
由于考研只要求考察他的概念和性质 这里只讲解概念和性质
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有