B树就是B-树吗?

作者&投稿:道沈 (若有异议请与网页底部的电邮联系)
oracle 中的B树是 b+树还是 b-树啊还是 B树。看了一些资料,我感觉是B+树,但又没有找到权威的佐证。~

B-树是m叉查找树,而你上面提到的B树的B代表Binary,和B-树(依然读作B shu,不是B减树)不是同一个东西。B树是二叉查找树。
Oracle里面的应该是B-树吧。。。我也不确定

一、B树的起源

B树,最早是由德国计算机科学家Rudolf Bayer等人于1972年在论文 《Organization and Maintenance of Large Ordered Indexes》提出的,不过我去看了看原文,发现作者也没有解释为什么就叫B-trees了,所以把B树的B,简单地解释为Balanced或者Binary都不是特别严谨,也许作者就是取其名字Bayer的首字母命名的也说不定啊……

二、B树长啥样

还是直接看图比较清楚,图中所示,B树事实上是一种平衡的多叉查找树,也就是说最多可以开m个叉(m>=2),我们称之为m阶b树,为了体现本博客的良心之处,不同于其他地方都能看到2阶B树,这里特意画了一棵5阶B树 。

总的来说,m阶B树满足以下条件:
每个节点至多可以拥有m棵子树
根节点,只有至少有2个节点(要么极端情况,就是一棵树就一个根节点,单细胞生物,即是根,也是叶,也是树)
非根非叶的节点至少有的Ceil(m/2)个子树(Ceil表示向上取整,图中5阶B树,每个节点至少有3个子树,也就是至少有3个叉)
非叶节点中的信息包括[n,A0,K1,A1,K2,A2,…,Kn,An],,其中n表示该节点中保存的关键字个数,K为关键字且Ki<Ki+1,A为指向子树根节点的指针
从根到叶子的每一条路径都有相同的长度,也就是说,叶子节在相同的层,并且这些节点不带信息,实际上这些节点就表示找不到指定的值,也就是指向这些节点的指针为空
B树的查询过程和二叉排序树比较类似,从根节点依次比较每个结点,因为每个节点中的关键字和左右子树都是有序的,所以只要比较节点中的关键字,或者沿着指针就能很快地找到指定的关键字,如果查找失败,则会返回叶子节点,即空指针
例如查询图中字母表中的K
从根节点P开始,K的位置在P之前,进入左侧指针
左子树中,依次比较C、F、J、M,发现K在J和M之间
沿着J和M之间的指针,继续访问子树,并依次进行比较,发现第一个关键字K即为指定查找的值
三、Plus版——B+树
作为B树的加强版,B+树与B树的差异在于:
有n棵子树的节点含有n个关键字(也有认为是n-1个关键字)
所有的叶子节点包含了全部的关键字,及指向含这些关键字记录的指针,且叶子节点本身根据关键字自小而大顺序连接
非叶子节点可以看成索引部分,节点中仅含有其子树(根节点)中的最大(或最小)关键字

请点击输入图片描述
B+树的查找过程,与B树类似,只不过查找时,如果在非叶子节点上的关键字等于给定值,并不终止,而是继续沿着指针直到叶子节点位置。因此在B+树,不管查找成功与否,每次查找都是走了一条从根到叶子节点的路径

B树就是B-树,等价的,一般都说是B树,B+树是B树的一种变形,B+树和B树他们之间有区别。

通常表示B-树B*-树B+-树中的“-”是英文中的连词符号,没有实在的意义。所以B树就是B-树

B树就是B-树,这个是由于国内对英文书籍翻译所产生的问题,B+树是B树的变形。绝对准确,我以前也纠结过这个问题

B-树是一种平衡的多路查找树。
B+树是应文件系统所需而出的一种B-树的变形树。
一颗M阶的B+树和M阶B-树的区别是:
1.有N棵子树的节点中可能含有N个关键字
2.所有的叶子节点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子节点本身以关键字的大小自小而大顺序链接.
3.所有的非终端节点可以看成是索引部分,节点中仅含有其子树(根节点)中的最大(或最小)关键字.

B树包括B+和B-两种,B+是B-的一种变形,主要应用于文件系统,B-是一种平衡的多路查找树。

因此,B树是两者的统称。


m阶B-树是一棵()。
【答案】:B B-树又叫多路平衡查找树,是一种组织和维护外存文件系统非常有效的数据结构。B-树中每个结点之多有m棵子树,m就是B-树的阶。m阶B-树就是一棵m叉平衡排序树。

b 树是什么意思?
B树孕育了许多衍生版本,如B+树、B*树等。B+树是在B树的基础上进行的优化,主要是将数据放在叶子节点上,其他部分只包含索引。这样可以提高B树的查找效率,还可以避免重复数据,保持数据独立性。B*树是在B+树的基础上进行的修改,主要是优化了B+树的分裂和合并过程,从而提高了树的利用率。总的来...

B树和二叉排序树,B树和B+树的区别
例如查询图中字母表中的K 从根节点P开始,K的位置在P之前,进入左侧指针 左子树中,依次比较C、F、J、M,发现K在J和M之间 沿着J和M之间的指针,继续访问子树,并依次进行比较,发现第一个关键字K即为指定查找的值 三、Plus版——B+树 作为B树的加强版,B+树与B树的差异在于:有n棵子树的...

数据结构中B-, B+树,
一个 B-Tree 是一种针对在块设备上优化操作的数据结构。块设备或磁盘有相当重要的数据访问延迟,尤其是机械硬盘。在随机位置检索单个字节并不比检索更大的数据花费的时间更少。这是 B-Tree 的基本原理,InnoDB 使用的数据页为 16KB。让我们尝试简化 B-Tree 的描述。B-Tree 是围绕这键来组织的数据...

B-树是一种平衡的多路查找树。以下关于B-树的叙述中,正确的是( )。
【答案】:B B-树中,所有非终端结点也就是非叶子结点,都会包含关键字,A选项错误。B-树中,所有叶子结点都出现在同一层次上并且不带信息(可以看作是外部结点或查找失败的结点),层次相同也就是高度相同,从根结点到每个叶子结点的路径长度相同,B选项正确。B-树中,所有非终端结点包含的关键字数量...

为什么要用B+树结构
B+tree是B-tree的变种,数据只能存储在叶子节点。B+tree是B-tree的变种,B+tree数据只存储在叶子节点中。先从数据结构的角度来题主应该知道B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。再补充说明一下B+树占空间小(空间),树...

oracle的B树索引到底是不是基于二叉树
B-Tree索引是最常见的索引结构,默认创建的索引就是B-Tree索引。 一、B树索引的结构 B-树索引是基于二叉树结构的。B-树索引结构有3个基本组成部分:根节点、分支节点和叶子节点。其中根节点位于索引结构的最顶端,而叶子节点位于索引结构的最底端,中间为分子节点。 叶子节点(Leaf node):包含条目直接指向表里的数据...

什么是二叉树的阶数?阶数最大有多少?
二叉树的阶数是一个节点的子节点数目的最大值。对于一棵m阶B-tree,每个结点至多可以拥有m个子结点。各结点的关键字和可以拥有的子结点数都有限制,规定m阶B-tree中,根结点至少有2个子结点,除非根结点为叶子节点;相应的,根结点中关键字的个数为1~m-1,比节点数目少一个;非根结点至少有[m\/...

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

在B-树中,最少有关键码多少个结点?
m阶B树:⑴ 树中每个结点至多有m个孩子;⑵ 除根结点和叶子结点外,其它每个结点至少有m\/2个孩子;⑶ 若根结点不是叶子结点,则至少有2个孩子;⑷ 所有叶子结点都出现在同一层,叶子结点不包含任何关键字信息;⑸ 有k个孩子的非终端结点恰好包含有k-1个关键字。在B-树中,每个结点中关键字从小到...

方正县18957972205: oracle的B树索引到底是不是基于二叉树 -
淫利阿米: B-Tree索引是最常见的索引结构,默认创建的索引就是B-Tree索引.一、B树索引的结构B-树索引是基于二叉树结构的.B-树索引结构有3个基本组成部分:根节点、分支节点和叶子节点.其中根节点位于索引结构的最顶端,而叶子节点位于...

方正县18957972205: 下列关于n个结点的m阶B树的说法中,正确的是 - ------ -
淫利阿米: B树即是B-树由B-Tree直译而来.按照B树的定义:A、树中每个结点最多有m个关键字 错误 有j个结点的非叶子结点有j-1个关键字,由于m阶所以非叶子结点最多有m个结点,因此最多m-1个关键字 B、树中叶子结点的个数为n+1 错误 总共n个结...

方正县18957972205: oracle数据库索引种类,分别什么情况下使用 -
淫利阿米: 1. b-tree索引 Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名.CREATE INDEX语句时,默认就是在创建b-tree索引.没有特别规定可用于任何情况. 2. 位图索引(bitmap index) 位图索引特定...

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

方正县18957972205: 在数据结构中m阶B树是什么意思 -
淫利阿米: m阶B树 就是m叉树

方正县18957972205: 数据结构中B树、B+树的区别
淫利阿米: 这两种处理索引的数据结构的不同之处: 1.B树中同一键值不会出现多次,并且它有可能出现在叶结点,也有可能出现在非叶结点中.而B+树的键一定会出现在叶结点中,并且有可能在非叶结点中也有可能重复出现,以维持B+树的平衡. 2.因为B树键位置不定,且在整个树结构中只出现一次,虽然可以节省存储空间,但使得在插入、删除操作复杂度明显增加.B+树相比来说是一种较好的折中. 3.B树的查询效率与键在树中的位置有关,最大时间复杂度与B+树相同(在叶结点的时候),最小时间复杂度为1(在根结点的时候).而B+树的时候复杂度对某建成的树是固定的.

方正县18957972205: m阶b树是什么意思 -
淫利阿米: 一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树.它或者是空树,或者是满足下列性质的树: 1、根结点至少有两个子女; 2、每个非根节点所包含的关键字个数 j 满足:┌m/2┐-1≤ j≤ m-1; 3、除根结点以外的所有结点(不包括...

方正县18957972205: 什么是B+ tree -
淫利阿米: Binary(二进制) Tree(树)B+树越大,浪费空间越严重.这点远不如B-树.并且B+树对任一结点的查找都要走一条从根到叶子结点的路径,效率也不一定就比B-树高

方正县18957972205: 为什么有关MongoDB采用B树索引,以及Mysql B+树做索引 -
淫利阿米: 先从数据结构的角度来答.题主应该知道B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域.这就决定了B+树更适合用来存储外部数据,也就是所谓的磁盘数据.从Mysql(...

方正县18957972205: 为什么文件存储要选用B+树这样的数据结构 -
淫利阿米: 您好,我来为您解答:因为要降低搜索一个文件的时候,IO的次数.比如一个1000度的B树,磁盘上面有抄10亿个文件的话,B树只需要 4 次就好了.其他的数据结构做不到.磁盘很慢,当涉及到磁盘的输入输出的时候,CPU的时间就已经可以忽略不计了,数据结构的设计要集中考虑到尽可能降低IO的次数,所以B树应运而生.如果我的回答没能帮助您,请继续zd追问.

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