算法:B树

作者: supermans1202 | 来源:发表于2018-07-25 22:08 被阅读11次
  • 首先,简单说一下B树产生的原因。
    B树是一种查找树,我们知道,这一类树(比如二叉查找树,红黑树等等)最初生成的目的都是为了解决某种系统中,查找效率低的问题。B树也是如此,它最初启发于二叉查找树,二叉查找树的特点是每个非叶节点都只有两个孩子节点。然而这种做法会导致当数据量非常大时,二叉查找树的深度过深,搜索算法自根节点向下搜索时,需要访问的节点也就变的相当多。如果这些节点存储在外存储器中,每访问一个节点,相当于就是进行了一次I/O操作,随着树高度的增加,频繁的I/O操作一定会降低查询的效率。

  • 树中每个结点最多含有m个孩子(m>=2);

  • 除根结点和叶子结点外,其它每个结点至少有[ceil(m / 2)]个孩子(其中ceil(x)是一个取上限的函数);

  • 若根结点不是叶子结点,则至少有2个孩子(特殊情况:没有孩子的根结点,即根结点为叶子结点,整棵树只有一个根节点);

  • 所有叶子结点都出现在同一层,叶子结点不包含任何关键字信息(可以看做是外部接点或查询失败的接点,实际上这些结点不存在,指向这些结点的指针都为null);(读者反馈@冷岳:这里有错,叶子节点只是没有孩子和指向孩子的指针,这些节点也存在,也有元素。@研究者July:其实,关键是把什么当做叶子结点,因为如红黑树中,每一个NULL指针即当做叶子结点,只是没画出来而已)。

  • 每个非终端结点中包含有n个关键字信息: (n,P0,K1,P1,K2,P2,......,Kn,Pn)。其中:
    a) Ki (i=1...n)为关键字,且关键字按顺序升序排序K(i-1)< Ki。
    b) Pi为指向子树根的接点,且指针P(i-1)指向子树种所有结点的关键字均小于Ki,但都大于K(i-1)。
    c) 关键字的个数n必须满足: [ceil(m / 2)-1]<= n <= m-1。如下图所示

例子:


image.png

相关文章

  • B树算法普及 和 索引结构

    B树算法普及 B-tree B+tree B*Tree B树索引结构 0 4 第...

  • 算法:B树

    首先,简单说一下B树产生的原因。B树是一种查找树,我们知道,这一类树(比如二叉查找树,红黑树等等)最初生成的目的都...

  • B+树是什么?与B树的区别?

    1.算法导论对于B树的定义 1.1 B树定义 1.2 B树高度 1.3 B树的搜索 2.B树和B+树的区别 1)B...

  • B-树和B+树

    参考链接:MySQL索引背后的数据结构及算法原理B树、B-树、B+树、B*树 1.B-Tree 为了描述B-Tre...

  • 数据结构与算法-AVL 红黑树

    AVL树AVL树 算法红黑树红黑树 B站

  • 算法:B-树 B+树

    B-树特征: 一个m阶的B树具有以下特征: 根节点至少有两个子女 每个中间节点都包含k-1个元素和k个孩子(m/2...

  • 《算法导论》-- B树

    1 概述 B树是为磁盘或其它直接存取的辅助存储设备而设计的一种平衡搜索树。B树类似于红黑树,但它在降低磁盘I/O操...

  • 收藏夹

    平衡二叉树、B树、B+树、B*树 MySQL索引背后的数据结构及算法原理 Redis集群方案应该怎么做? 分布式开...

  • Python数据分析与机器学习38-Xgboost算法

    一. 集成算法简介 下图是一个集成算法的图解:y = wx +b第一个树用来求权重值w第二个树用来求截距 b多个树...

  • 2018-03-22(3)

    建索引:B树k_gramBSBI_算法SPIMI——DIstributed indexingDynamic index

网友评论

    本文标题:算法:B树

    本文链接:https://www.haomeiwen.com/subject/nobmmftx.html