题目内容 (请给出正确答案)
[主观题]

对二叉排序树的查找都是从根结点开始,则插入失败一定落在叶子上。

提问人:网友zhanwanzi252 发布时间:2022-01-07
参考答案
查看官方参考答案
如搜索结果不匹配,请 联系老师 获取答案
更多“对二叉排序树的查找都是从根结点开始,则插入失败一定落在叶子上…”相关的问题
第1题
每个结点的关键字都比左孩子关键字大,比右孩子关键字小,这样的二叉树都是二叉排序树。( )
点击查看答案
第2题
在二叉排序树中插入一个新结点,总是作为叶子结点插入。
点击查看答案
第3题
在二叉排序树中插入一个结点,该结点一定在叶子上。
点击查看答案
第4题
已知二叉排序树的左右子树均不为空,则__________上所有结点的值均小于它的根结点值,__________上所有结点的值均大于它的根结点的值
点击查看答案
第5题
若二叉排序树中序序列是从小到大的序列,下列说法正确的是()

A、二叉排序树中,每个结点的关键字都大于等于其左子树中所有结点关键字,都小于其右子树中所有结点关键字

B、二叉排序树中,每个结点的关键字都小于等于其左子树中所有结点关键字,都大于其右子树中所有结点关键字

C、二叉排序树中,每个结点的关键字都小于等于其左右孩子关键字

D、二叉排序树中,每个结点的关键字大于等于其左孩子关键字,都小于其右孩子关键字

点击查看答案
第6题
在一棵二叉查找树下插入一个新结点,则新结点成为一个叶子。
点击查看答案
第7题
在结点数确定的二叉排序树上进行查找的平均查找长度与二叉树的形态有关,最差的情况是二叉排序树为()树的时候。
点击查看答案
第8题
某二叉链表存储的二叉树中,分别统计度0,度为1和度为2的结点个数。
点击查看答案
第9题
阅读下列C函数和函数说明,将应填入(n)处的字句写在对应栏内。

【说明】

函数DeleteNode (Bitree *r, int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:

typedef struct Tnode{

int data; /*结点的键值*/

struct Tnode *Lchild, *Rchild; /*指向左、右子树的指针*/

}*Bitree:

在二叉查找树上删除一个结点时,要考虑3种情况:

①若待删除的结点p是叶子结点,则直接删除该结点;

②若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点p;

③若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述①、②情况之一。

【函数】

int DeleteNode (Bitree *r,int e) {

Bitree p=*r,pp,s,c;

while ((1) ){ /*从树根结点出发查找键值为e的结点*/

pp=p;

if(e<p->data) p=p->Lchild;

else p=p->Rchild;

}

if(!P) return-1; /*查找失败*/

if(p->Lchild && p->Rchild) {/*处理情况③*/

s=(2);pp=p

while (3) {pp=s;s=s->Rchild;}

p->data=s->data; p=s;

}

/*处理情况①、②*/

if ((4) ) c=p->Lchild;

else c=p->Rchild;

if(p==*r) *r=c;

else if ((5) ) pp->Lchild=c;

else pp->Rchild=c;

free (p);

return 0;

}

点击查看答案
第10题
阅读下列函数说明和C函数,将应填入(n)处。

【函数3说明】

函数DeleteNode(Bitree * r,int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:

typedef struct Tnode{

int data; /*结点的键值*/

struct Tnode * Lchild,*Rchild; /*指向左、右子树的指针*/

} * Bitree;

在二叉查找树上删除一个结点时,要考虑三种情况:

①若待删除的结点p是叶子结点,则直接删除该结点;

②若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点P;

③若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述①、②情况之一。

【函数3】

int DeleteNode(Bitree * r,int e){

Bitree p=*r,pp,s,c;

while((1)){ /*从树根结点出发查找键值为e的结点*/

pp=p;

if(e<p->data)p=p->Lchild;

else p=p->Rchild;

{

if(!p)return-1; /*查找失败*/

if(p->Lchild &&p->Rchild){/*处理情况③*/

s=(2); pp=p;

while((3)){pp=s;s=s->Rchild;}

p->data=s->data;p=s;

}

/*处理情况①、②*/

if((4))c=p->Lchild;

else c=p->Rchild;

if(p==*r)*r=c;

else if((5))pp->Lchild=c;

else pp->Rchild=c;

free(p);

return 0;

}

点击查看答案
账号:
你好,尊敬的用户
复制账号
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
欢迎分享答案

为鼓励登录用户提交答案,简答题每个月将会抽取一批参与作答的用户给予奖励,具体奖励活动请关注官方微信公众号:简答题

简答题官方微信公众号

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
简答题
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反简答题购买须知被冻结。您可在“简答题”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
简答题
点击打开微信