本文已参与「新人创作礼」活动,一起开启掘金创作之路。
B树
B树,是一种在计算机科学自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树一个节点可以拥有2个以上的子节点。与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。
- B树,多路平衡查找树
- B树中所有结点的孩子个数的最大值称为B树的阶,用m表示
性质
一棵m阶B树或为空树,或为满足如下特性的m叉树
- 每个结点最多m个子树,即最多m-1个关键字(注意结点和关键字的区别,一个结点可以有多个关键字)
- 根结点不是终端结点,则至少两个子树
- 非叶结点至少有⌈m/2⌉个子树,即至少⌈m/2⌉-1个关键字(除根结点)(向上取整)
- 关键字的大小关系与二叉排序树类似
- 叶结点都在同一层,并且不带信息
查找过程类比二叉排序树即可
插入
每次插入后都需要逐层向上检查是否溢出而且要满足关键字大小的要求
删除
B+树
B+ 树是一种树数据结构,通常用于数据库和操作系统的文件系统中。B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+ 树元素自底向上插入,这与二叉树恰好相反。 B+ 树在节点访问时间远远超过节点内部访问时间的时候,比可作为替代的实现有着实在的优势。
性质
- 每个分支结点最多m个子树
- 非叶根结点至少有两个子树,其他结点至少有⌈m/2⌉个子树
- 结点的子树个数与关键字个数相等(与B树有区别)