三十、【进阶】B-Trees的演变过程

1、索引结构

(1)二叉树

(2)B-Tree树

B-Tree树最大度数为5,代表每一个节点最多存储4个key(每个节点最多存储4个数据),5个指针(可以指向5个子节点)。

2、演变过程(最大度数为5)

(1)先插入【1】、【2】、【3】、【4】:

(2)再插入【5】,因为最大度数为5,代表每个节点最多插入4个数据,当插入第五个数据时,中间的数据的就会向上分裂,如下:

(3)插入【6】,先找到根节点,【6】>【3】,所以【6】应存储再【3】的右子树上,【3】右子树的第一个节点已经存储了【4、5】,按照从小到大顺序,将【6】存储进去,最终,【3】右子树的第一个节点为【4、5、6】:

以此类推,存储【7】:

(4)在存储【8】时,因为【3】右子树的第一个节点已经存储了4个key,所以在存储【8】时,【4、5、6、7、8】中间元素会向上分类,形成如下:

(5)依次类推,存储【8、9、10、11、12、13、14、15、16】,如下:

(6)在存储【17】时,因为【17】>【12】,所以被分配向根节点的最右边的子树,根节点最右边的子树变为【13、14、15、16、17】,但因为节点的度数最大为5(最多存储4个key),所以该节点的中间元素【15】将会向上分裂,与上一节点合并在一起,形成【3、6、9、12、15】。但该节点(【3、6、9、12、15】)存储的key又超过了最大值,所以该节点的中间【9】又会向上分裂,形成如下:

相关推荐
多米Domi0111 小时前
0x3f 第49天 面向实习的八股背诵第六天 过了一遍JVM的知识点,看了相关视频讲解JVM内存,垃圾清理,买了plus,稍微看了点确定一下方向
jvm·数据结构·python·算法·leetcode
L_090710 小时前
【C++】高阶数据结构 -- 红黑树
数据结构·c++
划破黑暗的第一缕曙光14 小时前
[数据结构]:5.二叉树链式结构的实现1
数据结构
青桔柠薯片14 小时前
数据结构:单向链表,顺序栈和链式栈
数据结构·链表
XiaoFan01215 小时前
将有向工作流图转为结构树的实现
java·数据结构·决策树
睡一觉就好了。15 小时前
快速排序——霍尔排序,前后指针排序,非递归排序
数据结构·算法·排序算法
齐落山大勇15 小时前
数据结构——单链表
数据结构
皮皮哎哟16 小时前
深入浅出双向链表与Linux内核链表 附数组链表核心区别解析
c语言·数据结构·内核链表·双向链表·循环链表·数组和链表的区别
wWYy.16 小时前
指针与引用区别
数据结构
历程里程碑16 小时前
Linux 17 程序地址空间
linux·运维·服务器·开发语言·数据结构·笔记·排序算法