序
闲来无事,心中对知识的渴望却在无限增长。
stay foolish,stay hunger 是咱们程序员应具有的 “传统美德”
什么是BTree
维基百科中
B树的定义为“在计算机科学中,B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。
B树,概括来说是一个节点可以拥有多于2个子节点的二叉查找树。 与自平衡二叉查找树不同,B-树为系统最优化大块数据的读和写操作。
B-tree算法减少定位记录时所经历的中间过程,从而加快存取速度。普遍运用在数据库和文件系统。”
定义
B 树可以看作是对二叉查找树的一种扩展,即他允许每个节点有M-1个子节点。
- 根节点至少有两个子节点
- 每个节点有M-1个key,并且升序排列
- 位于M-1和M key的子节点的值位于M-1 和M key对应的Value之间
- 其它节点至少有M/2个子节点
下图是一个M=4 阶的B树:
BTree 生成规则
设为M阶BTree,则满足以下条件:
- 所有节点有(M-1)个key值,包含1到(M-1)个值。跟节点除外
- 每个节点上有(M-1)个key值,且按照升序排列.
- 若B节点为的父节点为A,则B节点的值则小于等于A节点中链接的值
- 当节点中的key值超过(M-1)个值是,则需要按照满足1/2/3规则重新平衡该节点
平衡规则
将该节点中索引为((M+1)/2)取整的值推举为父亲节点中去,若父亲节点未平衡则继续按照此规则进行平衡,直致平衡
生成BTree 示例
下面是往 [4 阶的B树] 中依次插入
6 10 4 14 5 11 15 3 2 12 1 7 8 8 6 3 6 21 5 15 15 6 32 23 45 65 7 8 6 5 4
B+Tree
关于B+Tree可查阅此链接文章: https://blog.csdn.net/a764340703/article/details/82621781