在一棵B—树中删除关键码,若最终引起树根结点的合并,则新树比原树

题目

在一棵B—树中删除关键码,若最终引起树根结点的合并,则新树比原树的高度()。

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

如下所示是一棵5阶B树,该B树现在的层数为2。从该B树中删除关键码38后,该B树的第2层的结点数为

A.6

B.7

C.8

D.9


正确答案:A

第2题:

一棵树按照左子女-右兄弟表示法转换成对应的二叉树,则该二叉树中树根结点肯定没有【 】子女。


正确答案:右
右 解析:对于根结点没有兄弟,所以没有右子女。

第3题:

下面关于B树运算的叙述中,正确的是

A.若插入过程中根结点发生分裂,则B树的高度加1

B.每当进行插入运算,就往B树的最下面一层增加一个新结点

C.若要删除的关键码出现在根结点中,则不能真正删除,只能做标记

D.删除可能引起B树结点个数减少,但不会造成B树高度减小


正确答案:A

第4题:

下面关于B树运算的叙述中,正确的是

A.若插入过程甲根结点发生分裂,则B树的高度加1

B.每当进行插入运算,就往B树的最下面一层增加一个新结点

C.若要删除的关键码出现在根结点中,则不能真正删除,只能做标记

D.删除可能引起B树结点个数减少,但不会造成B树高度减小


正确答案:A
解析:在B树里插入一个关键码的方法是:对于叶结点处于第i层的B树,插入的关键码总是在第i-1层。若i-1已满,则须把结点分裂为两个,并把中间的一个关键码插到结点的双亲结点上,若双亲结点也是满的,就需要再分裂再向上插。删除过程也类似。每当进行插入运算,就往B数的i-1增加一个新结点;若要删除的关键码出现在根结点中时,将把根结点与它的子女合并,形成新的结点;删除不但可能引起B树结点个数减少,而且会造成B树高度减小。

第5题:

如下所示是一棵5阶B树,从该B树中删除关键码41后,该B树的叶结点数为

A.6

B.7

C.8

D.9


正确答案:B

第6题:

在一棵树中,()没有前驱结点。

A.叶结点

B.空结点

C.树根结点

D.分支结点


参考答案:C

第7题:

阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点;否则,从树根的左子树根出发,沿结点的左

子树分支向下查找,直到某个结点不存在左子树时为止,该结点即为此二叉树的“最左下”结点。例如,下图所示的以 A为根的二叉树的“最

左下”结点为D,以C为根的子二叉树中的“最左下”结点为C。

二叉树的结点类型定义如下:

typedef stmct BSTNode{

int data;

struct BSTNode*lch,*rch;//结点的左、右子树指针

}*BSTree;

函数BSTree Find Del(BSTree root)的功能是:若root指向一棵二叉树的根结点,则找出该结点的右子树上的“最左下”结点*p,并从

树于删除以*p为根的子树,函数返回被删除子树的根结点指针;若该树根的右子树上不存在“最左下”结点,则返回空指针。

【函数】

BSTrce Find_Del(BSTreeroot)

{ BSTreep,pre;

if ( !root ) return NULL; /*root指向的二叉树为空树*/

(1); /*令p指向根结点的右子树*/

if ( !p ) return NULL;

(2); /*设置pre的初值*/

while(p->lch){ /*查找“最左下”结点*/

pre=p;p=(3);

}

if ((4)==root) /*root的右子树根为“最左下”结点*/

pre->rch=NULL;

else

(5)=NULL; /*删除以“最左下”结点为根的子树*/

reurn p;

}


正确答案:(1)p=root->rch (2)pre=root (3)p->lch (4)pre (5)pre->lch
(1)p=root->rch (2)pre=root (3)p->lch (4)pre (5)pre->lch 解析:根据题目中的说明,函数BSTree FindDel (BSTreeroot)的功能是:若root指向一棵二叉树的根结点,则找出该结点的右子树上的“最

左下”结点*p,并从树中删除以 *p为根的子树,函数返回被删除子树的根结点指针;若该树根的右子树上不存在“最左下”结点,则返回空指

针。而一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点;否则,从树根的左子树根出发,沿结点的

左子树分支向下查找,直到某个结点不存在左子树时为止,该结点即为此二叉树的“最左下”结点。
因此,给定一棵非空二叉树后,其右子树上的“最左下”结点要么为右子树根结点自己,要么为右子树根的左子树结点。
当二叉树非空时,root指向的结点是存在的,因此,令p指向根结点的右子树表示为“p=root->rch"。在二叉树上删除结点的操作实质上

是重置其父结点的某个子树指针,因此查找被删除结点时,需要保存被删结点的父结点指针,pre起的就是这个作用。空 (2)处应填入

“p=root",使得指针pre与p指向的结点始终保持父子关系。根据“最左下”结点的定义,空(3)处应填入“p->lch"。
当root的右子树根为“最左下”结点时,pre指针的指向就不会被修改,因此,空 (4)处应填入“pre”。若“最左下”结点在root的右子

树的左子树上,则删除以p指向的“最左下”结点为根的子树就是将pre(*p的父结点)的左子树指针置空,因此,空 (5)填入“pre->Ich"。

第8题:

以下关于B树运算的叙述中,哪一条是正确的?

A.若插入过程中根结点发生分裂,则B树的高度加1

B.每当进行插入运算,就在B树的最下面一层增加一个新结点

C.若要删除的关键码出现在根结点中,则不能真正删除,只能做标记

D.删除可能引起B树结点个数减少,但不会造成B树高度减小


正确答案:C

第9题:

一棵树按照左子女一右兄弟表示法转换成对应的二叉树,则该二叉树中树根结点肯定没有【 】子女。


正确答案:右
右 解析:由于根结点没有兄弟,所以没有右子女。

第10题:

在任意一棵非空二叉树中,删除某结点后又将其插入,则所得二叉排序树与删除前原二叉树排序树相同。


正确答案:错误

更多相关问题