B树非叶节点层是满的吗?

作者&投稿:籍武 (若有异议请与网页底部的电邮联系)
B树和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树种,当在叶子结点处于第L+1层的B树中插入关键字时,被插入的关键字总是进入第L层的结点。
b树中所有叶子结点都在同一层,并且不带任何信息。
所以你所说的最下层的非叶子节点是不是代表倒数第二层的能插入关键字的那一层,你是想要进行删除操作吗?

不一定,但是尽量放满比较好。
B树是平衡树,4阶B树相当于每个节点有三个键和四个指针,非叶节点最少的话相当于是内节点尽可能放满,但内节点可以不达到半满状态,因此15个关键字的话有4个就够,一个跟节点,三个其余内节点


B-树(B树)的基本概念

B-树中所有结点中孩子结点个数的最大值成为B-树的阶,通常用m表示,从查找效率考虑,一般要求m>=3。一棵m阶B-树或者是一棵空树,或者是满足以下条件的m叉树。

1)每个结点最多有m个分支(子树);而最少分支数要看是否为根结点,如果是根结点且不是叶子结点,则至少要有两个分支,非根非叶结点至少有ceil(m/2)个分支,这里ceil代表向上取整。

2)如果一个结点有n-1个关键字,那么该结点有n个分支。这n-1个关键字按照递增顺序排列。

3)每个结点的结构为: n k1 k2 ...kn 其中,n为该结点中关键字的个数;ki为该结点的关键字且满足ki

4)结点内各关键字互不相等且按从小到大排列。

5)叶子结点处于同一层;可以用空指针表示,是查找失败到达的位置。

注:平衡m叉查找树是指每个关键字的左侧子树与右侧子树的高度差的绝对值不超过1的查找树,其结点结构与上面提到的B-树结点结构相同,由此可见,B-树是平衡m叉查找树,但限制更强,要求所有叶结点都在同一层。




B树非叶节点层是满的吗?
不一定,但是尽量放满比较好。B树是平衡树,4阶B树相当于每个节点有三个键和四个指针,非叶节点最少的话相当于是内节点尽可能放满,但内节点可以不达到半满状态,因此15个关键字的话有4个就够,一个跟节点,三个其余内节点 B-树(B树)的基本概念 B-树中所有结点中孩子结点个数的最大值成为B-...

大顶堆的构造过程
在完全二叉树中,除了最后一层之外,其他层的节点都是满的,而且最后一层的节点都靠左对齐。然后,我们从最后一个非叶子节点开始,一直向上到根节点,逐个进行堆调整。堆调整的过程是比较当前节点的值与其孩子节点的值,如果当前节点的值小于其孩子节点中的最大值,就交换这两个节点的值。这样,通过一次...

满二叉树基本信息
在计算机科学中,满二叉树,也被称为完全二叉树,是一种特殊的二叉树结构。其定义特点是,除了最底层,每一层上的所有节点都拥有两个子节点。这意味着,除了最后一个层级,所有非叶子节点都有两个孩子。叶子节点,即没有子节点的节点,只存在于最底层,且这个层级的节点数量达到最大,形成一个紧密的...

什么是完全二叉树的定义?
完全二叉树的一个关键特征是,除了最下面两层,其它所有节点的度数都是2,即它们都有两个子节点。在最底层,所有的非叶子节点(度数小于2的节点)都集中在这一层的左边。这样的结构使得完全二叉树在存储和遍历上具有较高的效率,与非完全二叉树相比,它更加规则,更易于处理。总结来说,完全二叉树是...

为什么深度为k的满二叉树,其非叶子结点个数为2的k-1次方-1
观察可知,满二叉树每层有2的i-1次方个结点,i为所在层数,所以非叶子结点就有:1 + 2 + 2^2 + 2^3 +...+ 2^(k-2), 2^(k-1)为叶子的个数 用等比数列和的公式得非叶子结点个数为:2^(k-1) - 1 注:a^b即a得b次方,另外也可以用归纳法证 ...

为什么MySQL数据库要用B+树存储索引
满二叉树:树中每个分支节点(非叶节点)都有两棵非空子树完全二叉树:除最下两层外,其余节点度数都是2,如果最下面的节点不满,则所有空位都在右边,左边没有空位,如下图扩充二叉树(由已有非空二叉树生成的一种二叉树): 是原二叉树的最小节点扩充,使...

数据结构中,满二叉树,结点,叶子节点,是什么?
国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。节点:就是一个图中的0、1、2~~14,这些就叫节点。叶子节点:就是没有子节点的节点,比如图中的7、8、9~~14...

一棵含有15个关键字的4阶B树,其非叶结点数最少不能少于___个???为 ...
B树是平衡树,4阶B树相当于每个节点有三个键和四个指针,非叶节点最少的话相当于是内节点尽可能放满,但内节点可以不达到半满状态,因此15个关键字的话有4个就够,一个跟节点,三个其余内节点

一个包含n个分支结点(非叶结点)的非空满k叉树,k>=1,它的叶结点数目为...
它的叶结点数目是(k-1)*n+1个 你只要求出这个树有几层就可以把它的叶结点数求出来。它的分支结点有n个,设这个树有m层,所以有k^0+k^1+……+k^(m-2)=n,由此可求出层数m,再由m和k求出最后一层结点也就是叶结点的数目。

完全二叉树的基本理解(无代码版)
画完全二叉树时,需保证每一层的节点数按照2的幂次递增,且遵循左孩子-右孩子的顺序。例如,当面临这样一道题目:一棵含有200个节点的完全二叉树,非叶节点数量是多少?答案并非直接计算,而是需要巧妙地利用完全二叉树的性质。方法一通过层层分析,我们发现非叶节点数等于总结点数减去叶子节点数;方法二则...

金塔县15914628087: 一棵含有15个关键字的4阶B树,其非叶结点数最少不能少于 - ---个???为什么啊?? -
脂玲卡地: B树是平衡树,4阶B树相当于每个节点有三个键和四个指针,非叶节点最少的话相当于是内节点尽可能放满,但内节点可以不达到半满状态,因此15个关键字的话有4个就够,一个跟节点,三个其余内节点

金塔县15914628087: 求解一道B树的题 -
脂玲卡地: 个人想法啊,说下讨论一下,慢慢再细想.B树的非叶结点就是所有的结点了,叶子都是空的.B树每分裂一次,就会多一个结点出来,这一点无论是叶子还是中间结点都是这样的.但是树根是特殊的,树根分裂会导致多两个结点出来.这样的话,分裂的次数应该是P-1-(树高-1),因为要分裂P-1次得到P-1个结点(初始树根不是分裂得来的),但是由于生成B树的过程中会出现一直分裂到树根上面,所以有若干次是树根分裂,关键就是这个次数了,树根分裂一次就会导致树长高一层,总共要分裂树高-1次,树长高h-1层就行了.至于这个树高,话说这题是不是我考虑得太细了……树的高度还要跟B树的阶数有关,是一个有点复杂的式子……

金塔县15914628087: B - 树的特性 -
脂玲卡地: 1.关键字集合分布在整颗树中;2.任何一个关键字出现且只出现在一个结点中;3.搜索有可能在非叶子结点结束;4.其搜索性能等价于在关键字全集内做一次二分查找;5.自动层次控制;由于限制了除根结点以外的非叶子结点,至少含有M/2个儿子,确保了结点的至少利用率,其最底搜索性能为:其中,M为设定的非叶子结点最多子树个数,N为关键字总数;所以B-树的性能总是等价于二分查找(与M值无关),也就没有B树平衡的问题;由于M/2的限制,在插入结点时,如果结点已满,需要将结点分裂为两个各占M/2的结点;删除结点时,需将两个不足M/2的兄弟节点合并.

金塔县15914628087: 含有9个叶子结点的3阶B - 树中至少有多少个非叶子结点?含有10个叶子结点的3阶B - 树中 -
脂玲卡地: 9个叶子结点正好3层,有4个非叶子结点.10个叶子结点需4层,有6个非叶子结点.

金塔县15914628087: 二叉树根结点的层次是什么意思? -
脂玲卡地: 根的层次为0,根的直接左右孩子层次为1,以此类推层次逐渐递增.最大树身为99,即所有节点只有左孩子或者右孩子.最小树身为6,即每一层结点都是满的,除了最后一层叶节点.

金塔县15914628087: c语言数据结构 什么叫 最下层的非叶结点 b树里的 -
脂玲卡地: 在b树种,当在叶子结点处于第L+1层的B树中插入关键字时,被插入的关键字总是进入第L层的结点.b树中所有叶子结点都在同一层,并且不带任何信息.所以你所说的最下层的非叶子节点是不是代表倒数第二层的能插入关键字的那一层,你是想要进行删除操作吗?

金塔县15914628087: 在一阶b树上,每个非树根结点的关键字数目最少为多少个?最多为多少个 -
脂玲卡地:[答案] B树是平衡树,4阶B树相当于每个节点有三个键和四个指针,非叶节点最少的话相当于是内节点尽可能放满,但内节点可以不达到半满状态,因此15个关键字的话有4个就够,一个跟节点,三个其余内节点

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

金塔县15914628087: B+树和B - 树的差别 -
脂玲卡地: 对于一棵m阶的B-树和一棵m阶的B+树,它们的主要差异: ①B-树的叶子结点不含任何信息,而B+树的叶子结点含信息(关键字及其记录等). ②B-树上的叶子结点不会指向它的兄弟结点,而B+树上的叶子结点会指向它的兄弟结点. 作点解释...

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

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