首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

B B- B+ B*

实际使用的B都是在原B的基础上加上平衡算法,即“平衡二叉”;如何保持B结点分布均匀的平衡算法是平衡二叉的关键;平衡算法是一种在B中插入和删除结点的策略; B- 是一种多路搜索(并不是二叉的...B-的搜索,从根结点开始,对结点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围的儿子结点;重复,直到所对应的儿子指针为空,或已经是叶子结点; B-的特性:       ...M/2的结点;删除结点时,需将两个不足M/2的兄弟结点合并; B+        B+B-的变体,也是一种多路搜索:        1.其定义基本与B-同,除了:        2.非叶子结点的子树指针与关键字个数相同...B+的搜索与B-也基本相同,区别是B+只有达到叶子结点才命中(B-可以在 非叶子结点命中),其性能也等价于在关键字全集做一次二分查找;     B+的特性:        1.所有关键字都出现在叶子结点的链表中...B+要低,空间使用率更高; 小结 B:二叉,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点; B-:多路搜索,每个结点存储M/2到M个关键字,非叶子结点存储指向关键字范围的子结点

1.6K70

数据结构 B-

B-定义 B-,有时又写为B_(其中的“-”或者“-_只是连字符,并不读作“B减”),一颗 m 阶的 B-,或者本身是空,否则必须满足以下特性: 中每个结点至多有 m 棵子树; 若根结点不是叶子结点...B-插入关键字 B-也是从空开始,通过不断地插入新的数据元素构建的。B-在插入新的数据元素时并不是每次都向中插入新的结点。...为: image.png 插入关键字 7:从根结点开始依次做判断,最终判定在 c 结点中添加,添加后发现 c 结点需要分裂,分裂规则同上面的方式一样,结果导致关键字 7 存储到其双亲结点 b 中;后...例如在上图中 B-的情况下删除关键字 12 时,结点 c 中只有一个关键字,然后做删除关键字 37 的操作。...在删除结点 b 的同时,由于 b 中仅剩指向结点 c 的指针,所以连同其双亲结点中的 45 一同合并到其兄弟结点 e 中,最终的B-为: image.png 上图删除37后的B-

43910

图解:什么是B-、B+、B*

B-是两种树 特此声明:B-就是指的B 好了,本章结束 ?...什么是B- 首先B-是一种多路平衡搜索 简单来说,就是每个节点不止存储一个数据值 每个节点也不止有两个子节点 比起平衡二叉,它能很大程度减低的高度 提高的检索效率 3.1 B-的特点 下面来具体介绍一下一个...举个栗子,这就是一个B- ?...)是小于003的,005是大于003且小于006的,007是大于006的 3、这是一个3阶B-,每个节点最多有两个元素,每个节点最多有三个子孩子 好了,这样是不是就清晰多了 3.2 B-查询操作 查询数值...什么是B+ B+B-的变体,也是一种多路搜索 4.1 B+的特点 其定义基本和特性与B-同,除了: 1.非叶子结点的子树指针与关键字个数相同 2.非叶子结点的子树指针P[i],指向关键字值属于

8.2K43

数据库索引(结合B-和B+

用B-Tree作为索引结构效率是非常高的 1)B- B-Tree是一种多路搜索(并不是二叉的):        1.定义任意非叶子结点最多只有M个儿子;且M>2;        2.根结点的儿子数为...B+ 中,数据对象的插入和删除仅在叶节点上进行。 这两种处理索引的数据结构的不同之处:   1、B-中同一键值不会出现多次,并且它有可能出现在叶结点,也有可能出现在非叶结点中。...2、因为B-键位置不定,且在整个树结构中只出现一次,虽然可以节省存储空间,但使得在插入、删除操作复杂度明显增加。B+相比来说是一种较好的折中。   ...3、B-的查询效率与键在中的位置有关,最大时间复杂度与B+相同(在叶结点的时候),最小时间复杂度为1(在根结点的时候)。而B+的时候复杂度对某建成的是固定的。...为什么选用B+、B-   索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。

868130

数据结构b-和b+_A票领导B票算法

一、什么是多路查找 二叉有诸多便利之处,但是当二叉树节点极多时,二叉的构建速度就会受影响,而且过高的层数也会导致对的操作效率降低。...B,B+都是多叉 二、B B也称B-,它是一颗多路平衡查找。...2-3是最简单的B,它具有以下特点: 2-3的所有叶子节点都在同一层(只要是B都满足该条件) 有两个子节点的节点叫二节点,二节点要么没有子节点,要么有两个子节点。...3个数据项与四个子节点的四节点: 由于B的关键字集合可以分布在整颗树上,如果查找的数据离根节点很近,此时查找会比B+快 三、B+ B+具有以下特点: B+只有叶子节点存放数据(稠密索引),...,数据紧密性很高,缓存的命中率也会比B高 B+全节点遍历更快:B+遍历整棵只需要遍历所有的叶子节点即可,而不需要像B一样需要对每一层进行遍历,这有利于数据库做全表扫描 也由于这些优点,在mysql

34310

数据结构——AVL(C语言)

AVL(Adelson-Velskii 和 Landis)是带有平衡条件的二叉查找。在计算机科学中,AVL是最先发明的自平衡二叉查找。...在AVL中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡。查找、插入和删除在平均和最坏情况下的时间复杂度都是O(lngn)。...增加和删除可能需要通过一次或多次旋转来重新平衡这个。 节点的平衡因子是它的左子树的高度减去它的右子树的高度(有时相反)。带有平衡因子1、0或-1的结点被认为是平衡的。...AVL的基本操作一般涉及运作同在不平衡的二叉查找所运作的同样的算法。但是要进行预先或随后做一次或多次所谓的"AVL旋转"。 以下图标表示的四种情况,就是AVL旋转中常见的四种。...("中序遍历二叉: \n"); InorderTravel(T); printf("后序遍历二叉: \n"); PostorderTravel(T); printf

98621

数据结构——AVL(C语言)

AVL(Adelson-Velskii 和 Landis)是带有平衡条件的二叉查找。在计算机科学中,AVL是最先发明的自平衡二叉查找。...在AVL中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡。查找、插入和删除在平均和最坏情况下的时间复杂度都是O(lngn)。...增加和删除可能需要通过一次或多次旋转来重新平衡这个。 节点的平衡因子是它的左子树的高度减去它的右子树的高度(有时相反)。带有平衡因子1、0或-1的结点被认为是平衡的。...AVL的基本操作一般涉及运作同在不平衡的二叉查找所运作的同样的算法。但是要进行预先或随后做一次或多次所谓的"AVL旋转"。 以下图标表示的四种情况,就是AVL旋转中常见的四种。...("中序遍历二叉: \n"); InorderTravel(T); printf("后序遍历二叉: \n"); PostorderTravel(T); printf

1.1K21

B-和B+的应用:数据搜索和数据库索引

一、B- 1 .B-定义:有序数组+平衡多叉 B-是一种平衡的多路查找,它在文件系统中很有用。...删除后的如图4.2(c)所示。 图4.2(c) 如果因此使双亲结点中的关键字数目小于ceil(m/2)-1,则依次类推。...[例如],在 图4.2(c)的B-中删去关键字37之后,双亲b结点中剩余信息(“指针c”)应和其双亲*a结点中关键字45一起合并至右兄弟结点*e中,删除后的B-如图 4.2(d)所示。...性能’还有很多种B-的变型,力图对B-进行改进 二、B+ ---- B+是应文件系统所需而产生的一种B-的变形。...1、节点存储关键字多,IO次数少:B-和B+最重要的一个区别就是B+只有叶节点存放数据,其余节点用来索引,而B-是每个索引节点都会有Data域。

46620
领券