1.2 磁盘存储链式的B树与B+树
本博客总结自零声教育的课程
本博客将和大家一起学习B树和B+树的相关知识,包括多叉树的作用、B树的性质、B树与B+树的区别、等内容,并和大家一起手撕B树的相关代码,包括添加一个结点、删除一个结点等
下述内容相关的代码均在我的github中,代码中每条语句都有详细的注释,希望大家搭配代码来阅读以下内容,以下是我的github代码链接,恳请大家批评指正!
GitHub代码
我自己实现的btree.c代码在btree文件夹中
课程中的参考代码在0voice文件夹的btree文件夹中
知识树
1、多叉树的作用
多叉树的作用:降层高,使得结点数量变少,使得查找结点的次数变少,更快寻址:
★★★磁盘的存储适合用B树或B+树,因为多叉树降层高是为了方便寻址,每次内存向磁盘发送指令寻址时都需要消耗一定时间,使用B树或B+树可以使得寻址更快
2、B树的性质(6)
1、每个结点至多拥有M棵子树(M最好为偶数,易于分裂)
2、根节点至少拥有2棵子树
3、除了根节点以外,其余每个分支结点至少拥有M/2棵子树
4、所有叶子结点在同一层上
5、有k棵子树的分支结点存在k-1个关键字,关键字(key)按照递增顺序排序
6、关键字数量满足ceil(M / 2) <= n <= M – 1(ceil函数:向上取整)
3、多叉树和B树之间的区别与联系
联系:B树一定是多叉树,但是多叉树不一定是B树
区别(3):
1、多叉树没有约束平衡(B树的所有叶子结点在一层上面)
2、多叉树没有约束每个结点子树的数量(B树约束了每个结点至少有多少个子树)
3、遍历B树时数据是顺序的(B树