B树和B+树

B树和B+树的出现是为了查询数据时减少磁盘的IO次数,我们知道平衡二叉查找树是一种查询速度很快的数据结构。它的时间复杂度为(logN),但是它由于是一个二叉树,所以树的高度相对于多叉树来讲是比较高的,所以为了平衡磁盘IO与时间复杂度直接的关系,我们引入了B树和B+树

一、 何为B树?

首先我们要知道B树是一种多路平衡查找树,从这里我们可以知道,B树是一个多叉树,同时它又是一个平衡树,它的作用就是用来进行查询的。
首先我们从一个具体的B树来探究一下B树的定义:


从图可以看出,B树的高度与二叉树相比减少了

定义

根据Knuth的定义,一个m阶的B树是一个有以下属性的树:

  1. 每一个节点最多有m个子节点
  2. 每一个非叶子节点(除根节点)最少有[m/2]个子节点
  3. 如果根节点不是叶子节点,那么它至少有两个子节点
  4. 有k个子节点的非叶子节点有K-1个键
  5. 所有的叶子节点都在同一层
    关于B树的插入和删除操作,我们只需记着一个原则,在进行插入或删除操作后,一定要查看树是否满足约束条件,若不满足,则进行调整

二、何为B+树?

B+树是由B树演变而来,通常用于数据库和操作系统的文件系统中,有着比B树更高的查询性能

  1. 有m个子树的节点包含有m个元素
  2. 根节点和分支节点不保存数据,只用于索引,所有数据都保存在叶子节点中
  3. 叶子节点会包含所有的关键字,以及指向数据记录的指针,并且叶子节点本身是根据关键字的大小从小到大顺序链接。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文转载自博客,因为题主写的已经很详细了。 写在前面的一点,面试专用(m阶指的是每个节点最多有m个子树)。 一个m...
    放开那个BUG阅读 1,200评论 0 5
  • 参考:B树和B+树的总结B树、B-树、B+树、B*树都是什么 总结 利用平衡树的优势加快查询的稳定性和速度;B+树...
    小小少年Boy阅读 58,463评论 8 77
  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 13,352评论 0 25
  • B树又称多路查询排序树,是平衡排序二叉树的延伸。B+树是B树的改进,主要区别在于B+树的有效数据都集中在叶子节点上...
    onlyHalfSoul阅读 540评论 0 0
  • 以下内心独白日记,根据作者所见现实场景,酌情改编 2017.5.6 老婆子你怎么还不回来,儿媳妇对我很不好,我的记...
    嘟妹嘟嘟阅读 728评论 3 3