B-树和B+树的区别是什么?

作者&投稿:伊明 (若有异议请与网页底部的电邮联系)
B-树和B+树的区别是什么?~

B-树是一种多路搜索树(并不是二叉的。),一颗m阶的B-树,或为空树,或者定义任意非叶子结点最多只有M个儿子。
且M>2;根结点的儿子数为[2, M]。
除根结点以外的非叶子结点的儿子数为[M/2]。
每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)非叶子结点的关键字个数=指向儿子的指针个数-1;
B+树, B+树是B-树的变体,也是一种多路搜索树:其定义基本与B-树同。
B-树是一种 多路搜索 树(并不是二叉的。),一颗 m 阶 的B-树,或为空树,或 者定 义任意非叶子结点最 多只 有M 个儿子。
且M>2;根 结 点的儿 子 数 为 [2, M]。
除根结 点以 外的非叶子结点的儿子数为[M/2]。
每个结 点存放至 少M/2-1 (取上整) 和至 多 M- 1 个 关键 字;(至少2个关键字)非叶子结点的关 键 字个数 =指 向儿子 指针个数-1;
B+树, B+树是B-树的变体, 也是一种多路搜索树:其定义基本与B-树同。

对于一棵m阶的B-树和一棵m阶的B+树,它们的主要差异:
①B-树的叶子结点不含任何信息,而B+树的叶子结点含信息(关键字及其记录等)。
②B-树上的叶子结点不会指向它的兄弟结点,而B+树上的叶子结点会指向它的兄弟结点。
作点解释:这些叶子结点一个指向一个,最终连接成一个链表。
③B-树只能进行分区间查找,而B+树上可以有两种查找:顺序查找和分区间查找。
④B-树上所有的非叶结点都满足有n个关键字的话有n+1棵子树,而B+树上所有的非叶结点含n个关键字的话只含n棵子树。这个不同引起了如下几点的不同:
(1)B-树的非叶结点有n+1个查找区间,而B+树的却少了一个区间,这个区间恰好是最右边的区间(如果存在,这个区间所指的子树上的所有关键字的值都大于结点的所有关键字的值)。
(2)在B-树上,除根的非叶结点的子树个数不能少于m/2取上界(这个值用lowbou表示),等价地,关键字的个数不能少于lowbou-1,但在B+树上这个关系发生了变化,除根的其他结点的子树个数同样不能少于lowbou,但关键字的个数却不能少于lowbou,而不是lowbou减一,这个会给B+树的一些算法的具体实现带来不同。
(3)由于根结点至少需要两棵子树,因而B-树上的根结点的关键字可以只有一个,但是B+树不能,它至少要有两个关键字,这样它才可以有两棵子树(至于为什么根结点都需要两棵子树,是因为它们都是平衡的)。
⑤B-树上每一个关键字都配有记录,而在B+树上只有叶子结点上的关键字才配有记录。
作点解释:在B+树上,所有关键字的记录(指针)都集中在叶子结点上,其他地方的关键字只是充当索引,并没有与之配有相应的记录的指针。
⑥B-树查找可以停在某个非叶结点上,而B+树不能停在非叶结点上,它需要一直查找到叶子结点才能停下,因为B+树的关键字的记录只在叶子结点上。
作点补充和解释:在B+树上只要给定的关键字的大小不要比根结点的所有关键字都大(这样就没查找的必要了,因为全树最大的值就在根结点的最右边),那么对于这个关键字的查找,最后一定是停在叶子结点上的,无论它是否存在在B+树上,或者换句话说,无论查找成功与否。
⑦B-树上的关键字在全树中出现且仅出现一次,而在B+树上一个关键字可以出现在多个位置,可以有多个,但只有一个位置的关键字配有记录。
⑧B+树非叶结点上最右边的关键字表明了它所有子树中关键字的最大值,而B-树没有这规律
B+树和B-树最大的差别可以说是⑤,甚至这不仅是和B-树的差异,和其他一般的BST树都是这样,B+树上非叶结点上的关键字只是索引,它没有记录,而关键字真正的记录是在叶子结点上。
注意:①B-树上非叶结点是全部的内部结点,而B+树上的非叶结点不是全部的内部结点,它除去了最下层的结点。
②lowbou是子树下界的意思,或者说最小子树个数。

B-树

是一种多路搜索树(并不是二叉的),一颗m阶的B-树,或为空树,或者:

1.定义任意非叶子结点最多只有M个儿子;且M>2;
2.根结点的儿子数为[2, M];
3.除根结点以外的非叶子结点的儿子数为[M/2, M];
4.每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)
5.非叶子结点的关键字个数=指向儿子的指针个数-1;
6.非叶子结点的关键字:K[1], K[2], …, K[M-1];且K[i] < K[i+1];
7.非叶子结点的指针:P[1], P[2], …, P[M];其中P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于K[M-1]的子树,其它P[i]指向关键字属于(K[i-1], K[i])的子树;
8.所有叶子结点位于同一层;

B+树

B+树是B-树的变体,也是一种多路搜索树:

1.其定义基本与B-树同,除了:
2.非叶子结点的子树指针与关键字个数相同;
3.非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树(B-树是开区间);
5.为所有叶子结点增加一个链指针;
6.所有关键字都在叶子结点出现;

  • B-树是一种多路搜索树(并不是二叉的。),一颗m阶的B-树,或为空树,或者定义任意非叶子结点最多只有M个儿子。

  • 且M>2;根结点的儿子数为[2, M]。

  • 除根结点以外的非叶子结点的儿子数为[M/2]。

  • 每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)非叶子结点的关键字个数=指向儿子的指针个数-1;

  • B+树, B+树是B-树的变体,也是一种多路搜索树:其定义基本与B-树同。



B-树

是一种多路搜索树(并不是二叉的),一颗m阶的B-树,或为空树,或者:

1.定义任意非叶子结点最多只有M个儿子;且M>2;
2.根结点的儿子数为[2, M];
3.除根结点以外的非叶子结点的儿子数为[M/2, M];
4.每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)
5.非叶子结点的关键字个数=指向儿子的指针个数-1;
6.非叶子结点的关键字:K[1], K[2], …, K[M-1];且K[i] < K[i+1];
7.非叶子结点的指针:P[1], P[2], …, P[M];其中P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于K[M-1]的子树,其它P[i]指向关键字属于(K[i-1], K[i])的子树;
8.所有叶子结点位于同一层;

B+树

B+树是B-树的变体,也是一种多路搜索树:

1.其定义基本与B-树同,除了:
2.非叶子结点的子树指针与关键字个数相同;
3.非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树(B-树是开区间);
5.为所有叶子结点增加一个链指针;
6.所有关键字都在叶子结点出现;

对于一棵m阶的B-树和一棵m阶的B+树,它们的主要差异:
①B-树的叶子结点不含任何信息,而B+树的叶子结点含信息(关键字及其记录等)。
②B-树上的叶子结点不会指向它的兄弟结点,而B+树上的叶子结点会指向它的兄弟结点。
作点解释:这些叶子结点一个指向一个,最终连接成一个链表。
③B-树只能进行分区间查找,而B+树上可以有两种查找:顺序查找和分区间查找。
④B-树上所有的非叶结点都满足有n个关键字的话有n+1棵子树,而B+树上所有的非叶结点含n个关键字的话只含n棵子树。这个不同引起了如下几点的不同:
(1)B-树的非叶结点有n+1个查找区间,而B+树的却少了一个区间,这个区间恰好是最右边的区间(如果存在,这个区间所指的子树上的所有关键字的值都大于结点的所有关键字的值)。
(2)在B-树上,除根的非叶结点的子树个数不能少于m/2取上界(这个值用lowbou表示),等价地,关键字的个数不能少于lowbou-1,但在B+树上这个关系发生了变化,除根的其他结点的子树个数同样不能少于lowbou,但关键字的个数却不能少于lowbou,而不是lowbou减一,这个会给B+树的一些算法的具体实现带来不同。
(3)由于根结点至少需要两棵子树,因而B-树上的根结点的关键字可以只有一个,但是B+树不能,它至少要有两个关键字,这样它才可以有两棵子树(至于为什么根结点都需要两棵子树,是因为它们都是平衡的)。
⑤B-树上每一个关键字都配有记录,而在B+树上只有叶子结点上的关键字才配有记录。
作点解释:在B+树上,所有关键字的记录(指针)都集中在叶子结点上,其他地方的关键字只是充当索引,并没有与之配有相应的记录的指针。
⑥B-树查找可以停在某个非叶结点上,而B+树不能停在非叶结点上,它需要一直查找到叶子结点才能停下,因为B+树的关键字的记录只在叶子结点上。
作点补充和解释:在B+树上只要给定的关键字的大小不要比根结点的所有关键字都大(这样就没查找的必要了,因为全树最大的值就在根结点的最右边),那么对于这个关键字的查找,最后一定是停在叶子结点上的,无论它是否存在在B+树上,或者换句话说,无论查找成功与否。
⑦B-树上的关键字在全树中出现且仅出现一次,而在B+树上一个关键字可以出现在多个位置,可以有多个,但只有一个位置的关键字配有记录。
⑧B+树非叶结点上最右边的关键字表明了它所有子树中关键字的最大值,而B-树没有这规律
B+树和B-树最大的差别可以说是⑤,甚至这不仅是和B-树的差异,和其他一般的BST树都是这样,B+树上非叶结点上的关键字只是索引,它没有记录,而关键字真正的记录是在叶子结点上。
注意:①B-树上非叶结点是全部的内部结点,而B+树上的非叶结点不是全部的内部结点,它除去了最下层的结点。
②lowbou是子树下界的意思,或者说最小子树个数。


b树和b+树有什么区别?
B+树是B树的一种变体,也属于平衡多路查找树,大体结构与B树相同,包含根节点、内部节点和叶子节点。B树的非叶子节点存有数据,而B+树的非叶子节点没有存有树,b树它是一种多路的平衡搜索树,B+树更适合外部存储,B+树中所有叶子节点都是通过指针连接在一起,而B树不会。b树和b+树之间的区别 B+...

为什么MySQL使用B+树文章
事实上,在MySQL数据库中,诸多存储引擎使用的是B+树,即便其名字看上去是BTREE。4.1 innodb的索引机制 先以innodb存储引擎为例,说明innodb引擎是如何利用B+树建立索引的 首先创建一张表:zodiac,并插入一些数据 对于innodb来说,只有一个数据文件,这个数据文件本身就是用B+树形式组织,B+树每个节点...

btree和b+tree的区别
区别:(1)有n棵子树的结点中含有n个关键字; 而B树是n棵子树有n-1个关键字 (2)所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接。而B树的叶子节点并没有包括全部需要查找的信息 (3)所有的非终端结点可以看成是...

b+树和b树的区别是什么?
B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary)。(1)非叶子节点只能允许最多两个子节点存在。(2)每一个非叶子节点数据分布规则为左边的子节点小当前节点的值,右边的子节点大于当前节点的值(这里值是...

关于b 树和 b+ 树的叙述中,哪一条是不正确的
B+树 性质:B+树是B-树的变体,也是一种多路搜索树:其定义基本与B-树同,除了:2.非叶子结点的子树指针与关键字个数相同;3.非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树(B-树是开区间);4.为所有叶子结点增加一个链指针;5.所有关键字都在叶子结点出现;B-树...

下面关于B和B+树的叙述中,不正确的是()。
【答案】:C B-树又叫多路平衡查找树,是一种组织和维护外存文件系统非常有效的数据结构。在索引文件组织中,常使用B-树的变形——B+树,属于平衡的多叉树。两者都支持随机检索,但不能有效地支持顺序检索。

mysql索引的数据结构,为什么用b+树
B+ 树最大的几个特点:1. 非叶子节点只保留 KEY,放弃 DATA;2. KEY 和 DATA一起,在叶子节点,并且保存为一个有序链表(正序,反序,或者双向);3. B+ 树的查找与 B 树不同,当某个结点的 KEY 与所查的 KEY 相等时,并不停止查找,而是沿着这个 KEY 左边的指针向下,一直查到该关键字...

第五章——树与二叉树
森林:森林是m(m≥0)棵互不相交的树的集合 考点:森林和树相互转化问题 常见考点1:结点数=总度数+1 结点的度——结点有几个孩子(分支) 常见考点2:度为m的树、m叉树 的区别 常见考点3:度为m的树第 i 层至多有 m的i次方-1 个结点(i≥1) m叉树第 i 层至多有 mi-1 个结点(i≥1) 常见考点6:具...

hash索引和b 树索引的区别
Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。可能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么大家不都用 Hash 索引而...

椰子树和槟榔树有什么区别?
形态特征:槟榔树茎直立,乔木状,高10多米,最高可达30米,有明显的环状叶痕。叶簇生于茎顶,长1.3-2米,羽片多数,两面无毛,狭长披针形,长30-60厘米,宽2.5-4厘米,上部的羽片合生,顶端有不规则齿裂。椰子树一般高达25米以上,树干笔直,无枝无蔓,巨大的羽毛状叶片从树梢伸出,撑起一片...

德庆县18724802879: B+树和B - 树的差别 -
歹李维博: 对于一棵m阶的B-树和一棵m阶的B+树,它们的主要差异: ①B-树的叶子结点不含任何信息,而B+树的叶子结点含信息(关键字及其记录等). ②B-树上的叶子结点不会指向它的兄弟结点,而B+树上的叶子结点会指向它的兄弟结点. 作点解释...

德庆县18724802879: 简述B - 树和B+树的区别
歹李维博: B-树 是一种多路搜索树(并不是二叉的),一颗m阶的B-树,或为空树,或者: 1.定义任意非叶子结点最多只有M个儿子;且M&gt;2; 2.根结点的儿子数为[2, M]; 3.除根结点以外的非叶子结点的儿子数为[M/2, M]; 4.每个结点存放至少M/2-1(取上...

德庆县18724802879: B+树和B - 树是什么 -
歹李维博: B+树说明增 加树.B-树说 明减少树.

德庆县18724802879: 数据结构中B树、B+树的区别 -
歹李维博:[答案] 这两种处理索引的数据结构的不同之处:1.B树中同一键值不会出现多次,并且它有可能出现在叶结点,也有可能出现在非叶结点中.而B+树的键一定会出现在叶结点中,并且有可能在非叶结点中也有可能重复出现,以维持B+树的平衡...

德庆县18724802879: 什么是B+树索引? -
歹李维博: B+树是一种树数据结构,常见于数据库与档案系统之中.B+树能够使资料保持有序,并拥有均匀的对数处理时间的插入和删除动作.B树的元素通常会自底向上插入,有别于多数自顶向下插入的二叉树.B+ 树在节点访问时间远远超过节点内部...

德庆县18724802879: 举例说明oracle数据库中B树索引的基本组织结构 -
歹李维博: 楼上, 谁跟你说B树是2叉树了? 1. 首先 B树不是二叉树, 可以有很多叉, 取决于定义Key的数量, 或者是权的数量2. B树是平衡树的种类之一, 比二叉树的优点是, 由于它始终调整为“平衡”, 那么搜索时,始终能保持LOGN的效率, 二叉...

德庆县18724802879: 考研计算机 b+树数据库索引 一张数据页能存储多少个索引节点 -
歹李维博: 先从数据结构的角度来答.题主应该知道B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域.这就决定了B+树更适合用来存储外部数据,也就是所谓的磁盘数据.从Mysql(...

德庆县18724802879: 共享:文件系统为什么采用B+树,而不是B - 树
歹李维博: 2.B+树是应文件系统需求而衍生出来的B-树的变形.一棵m阶的B+树和m阶的B-树的差异在(1)有n棵子树的结点中含有n个关键字(2)所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子节点本身依关键字的大小从小到达的顺序链接(3)所有的非终端结点可以堪称是索引部分,结点中仅含有其子树中的最大或最小关键字

德庆县18724802879: 数据库为什么要用B+树结构 -
歹李维博: B+树种树数据结构n叉树每节点通孩棵B+树包含根节点、内部节点叶节点根节点能叶节点能包含两或两孩节点节点B+树通用于数据库操作系统文件系统NTFS,ReiserFS,NSS,XFS,JFS,ReFSBFS等文件系统都使用B+树作元数据索引B+树特点能够保持数据稳定序其插入与修改拥较稳定数间复杂度B+树元素自底向插

德庆县18724802879: b tree 和 b+ tree 的区别 -
歹李维博: .B树中同一键值不会出现多次,并且它有可能出现在叶结点,也有可能出现在非叶结点中.而B+树的键一定会出现在叶结点中,并且有可能在非叶结点中也有可能重复出现,以维持B+树的平衡. 2.因为B树键位置不定,且在整个树结构中只出现一次,

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网