B树和二叉排序树(如红黑树)、B树和B+树的区别

3人阅读 评论(0) 收藏 举报

B树是为了提高磁盘或外部存储设备查找效率而产生的一种多路平衡查找树。

B+树为B树的变形结构,用于大多数数据库或文件系统的存储而设计。


B树相对于红黑树的区别

在大规模数据存储的时候,红黑树往往出现由于树的深度过大而造成磁盘IO读写过于频繁,进而导致效率低下的情况。为什么会出现这样的情况,我们知道要获取磁盘上数据,必须先通过磁盘移动臂移动到数据所在的柱面,然后找到指定盘面,接着旋转盘面找到数据所在的磁道,最后对数据进行读写。磁盘IO代价主要花费在查找所需的柱面上,树的深度过大会造成磁盘IO频繁读写。根据磁盘查找存取的次数往往由树的高度所决定,所以,只要我们通过某种较好的树结构减少树的结构尽量减少树的高度,B树可以有多个子女,从几十到上千,可以降低树的高度。


B树和B+树的区别

B树所有叶子结点都出现在同一层,叶子结点不包含任何关键字信息。

B+树所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接,所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。 (而B 树的非终节点也包含需要查找的有效信息)

为什么说B+比B树更适合实际应用中操作系统的文件索引和数据库索引?

1) B+的磁盘读写代价更低

B+的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对B树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。

2) B+-tree的查询效率更加稳定

由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。

数据库索引采用B+树的主要原因是 B树在提高了磁盘IO性能的同时并没有解决元素遍历的效率低下的问题。正是为了解决这个问题,B+树应运而生。B+树只要遍历叶子节点就可以实现整棵树的遍历。而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作(或者说效率太低)


                </div>
查看评论

数据结构基础系列(6):树和二叉树

数据结构课程是计算机类专业的专业基础课程,在IT人才培养中,起着重要的作用。课程按照大学计算机类专业课程大纲的要求,安排教学内容,满足需要系统学习数据结构的人。系列课程包含11个部分,本课为第6部分“树和二叉树”,介绍树的相关概念和表示方法,重点是二叉事的性质、存储结构、遍历等基本操作的实现,以及应用基本操作解决问题的方法。
  • 2015年10月18日 06:22

B树、B-树、B+树与红黑树

参考二叉查找树(BST):二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的...
  • qq_17612199
  • qq_17612199
  • 2016-03-21 11:04:23
  • 6869

关于树的总结从二叉树->二叉搜索树->平衡二叉树->红黑树->B树与B+树

二叉树的定义与性质,包括各种操作的源代码在本博客的的此处:二叉树 二叉搜索树(Binary Search Tree)的定义性质以及源码实现在本博客此处:二叉搜索树 平衡二叉树(AVL树),是一棵完全二...
  • xygl2009
  • xygl2009
  • 2015-07-10 23:01:11
  • 1839

基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)

本文主要介绍几种比较重要的树形结构: ① 二叉排序树 ② 平衡二叉树 ③ B树 ④ B+树 ⑤ 伸展树 ⑥ 红黑树分为三个问题来描述每种树: ① 是什么?主要应用? ...
  • hqm12345qw
  • hqm12345qw
  • 2016-08-05 15:49:03
  • 811

AVL树、红黑树、B/B+树和Trie树的比较

AVL树、红黑树、B/B+树和Trie树的比较AVL树最早的平衡二叉树之一。AVL是一种高度平衡的二叉树,所以通常的结果是,维护这种高度平衡所付出的代价比从中获得的效率收益还大,故而实际的应用不多,更...
  • semiscone
  • semiscone
  • 2016-10-10 10:36:27
  • 2509

浅谈AVL树,红黑树,B树,B+树原理及应用

背景:这几天在看《高性能Mysql》,在看到创建高性能的索引,书上说mysql的存储引擎InnoDB采用的索引类型是B+Tree,那么,大家有没有产生这样一个疑问,对于数据索引,为什么要使用B+Tre...
  • whoamiyang
  • whoamiyang
  • 2016-07-18 09:36:32
  • 7275

二叉查找树、平衡二叉树、红黑树、B-/B+树性能对比

前言:BST、AVL、RBT、B-tree都是动态结构,查找时间基本都在O(longN)数量级上。下面做出详细对比。 1. 二叉查找树 (Binary Search Tree) 概念 ...
  • z702143700
  • z702143700
  • 2015-10-12 20:43:16
  • 6369

二叉树,完全二叉树,满二叉树,二叉排序树,平衡二叉树,红黑树,B数,B-树,B+树,B*树(二)

二叉树,完全二叉树,满二叉树,二叉排序树,平衡二叉树,红黑树,B数,B-树,B+树,B*树(一): http://blog.csdn.net/yuxin6866/article/detail...
  • yuxin6866
  • yuxin6866
  • 2016-08-26 13:08:54
  • 1343

浅析——B树,B+树,B*树以及分析MySQL的两种引擎

接触到了数据结构当中的B树,B+树,B*树,我觉得应该写一篇博客记录下,毕竟是第一次接触的,只有写了博客以后,感觉对这个的印象才会更加深刻。 前言: 为什么要有B树? 学习任何一个东西我们都要知...
  • qq_26768741
  • qq_26768741
  • 2016-11-17 13:52:50
  • 5874

数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)

BST树        即二叉搜索树:        1.所有非叶子结点至多拥有两个儿子(Left和Right);        2.所有结点存储一个关键字;        3...
  • Sup_Heaven
  • Sup_Heaven
  • 2014-09-16 12:07:08
  • 34981
    个人资料
    持之以恒
    等级:
    访问量: 2643
    积分: 123
    排名: 119万+
    文章分类
    最新评论