zoukankan      html  css  js  c++  java
  • B树和B+树

    一、B树

    1、什么是B树

    他是一种平衡多叉树

    2、M阶B树的特点

    (1)每个节点至多有m个子节点
    (2)除根节点和叶节点外,其他每个节点至少有m/2(向上取整)子节点
    (3)根节点至少有两个子节点
    唯一列外的是根节点就是叶节点是没有子节点
    此时B树只包含一个节点
    (4)所有叶节点都在同一层
    (5)每个结点最多有m-1个关键字,每个结点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。
     

    3、B树的作用

    B树常用于文件索引

    4、B树的常见操作

    插入、删除、查找

    二、B+树

    1、什么是B+树

    各种资料上B+树的定义各有不同,一种定义方式是关键字个数和孩子结点个数相同。这里我们采取维基百科上所定义的方式,即关键字个数比孩子结点个数小1,这种方式是和B树基本等价的。

    2、B+树的特点

    (1)B+树与B树最大的不同是内部结点不保存数据,只用于索引,所有数据(或者说记录)都保存在叶子结点中。

    (2)内部结点中的key都按照从小到大的顺序排列,对于内部结点中的一个key,左树中的所有key都小于它,右子树中的key都大于等于它。叶子结点中的记录也按照key的大小排列。

    (3) 每个叶子结点都存有相邻叶子结点的指针,叶子结点本身依关键字的大小自小而大顺序链接。

    3、B+树的作用

    B+树常用于数据库索引

    4、B+树的常见操作

    插入、删除、查找

    三、B树和B+树的区别

    1、关键字的数量不同;B+树中分支结点有m个关键字,其叶子结点也有m个,其关键字只是起到了一个索引的作用,但是B树虽然也有m个子结点,但是其只拥有m-1个关键字。

    2、存储的位置不同;B+树中的数据都存储在叶子结点上,也就是其所有叶子结点的数据组合起来就是完整的数据,但是B树的数据存储在每一个结点中,并不仅仅存储在叶子结点上。

    3、分支结点的构造不同;B+树的分支结点仅仅存储着关键字信息和儿子的指针(这里的指针指的是磁盘块的偏移量),也就是说内部结点仅仅包含着索引信息。

    4、查询不同;B树在找到具体的数值以后,则结束,而B+树则需要通过索引找到叶子结点中的数据才结束,也就是说B+树的搜索过程中走了一条从根结点到叶子结点的路径。

  • 相关阅读:
    图片处理
    define 常量的定义和读取
    curl
    stream_get_contents 和file_get_content的区别
    php flock 文件锁
    字符串函数
    php 常量
    debug_backtrace()
    pathlib模块替代os.path
    Python中对 文件 的各种骚操作
  • 原文地址:https://www.cnblogs.com/beanjk/p/10557657.html
Copyright © 2011-2022 走看看