首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。 【说明】 函数DeleteNode(Bitree*r,inte)的功能是:在树根节点指针为r的二叉查找(排序)树上删除键值为e的节点,若删除成功,则函数返回0,否则函数返回-1。二叉查
阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。 【说明】 函数DeleteNode(Bitree*r,inte)的功能是:在树根节点指针为r的二叉查找(排序)树上删除键值为e的节点,若删除成功,则函数返回0,否则函数返回-1。二叉查
admin
2013-05-11
39
问题
阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。
【说明】
函数DeleteNode(Bitree*r,inte)的功能是:在树根节点指针为r的二叉查找(排序)树上删除键值为e的节点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树节点的类型定义为:
typedef struct Tnode{
int data;/*节点的键值*/
struct Tnode *Lchild,*Rchiid;/*指向左、右子树的指针*/
}*Bitree;
在二叉查找树上删除一个节点时,要考虑3种情况。
①若待删除的节点p是叶子节点,则直接删除该节点。
②若待删除的节点p只有一个子节点,则将这个子节点与待删除节点的父节点直接连接,然后删除节点。
③若待删除的节点p有两个子节点,则在其左子树上,用中序遍历寻找关键值最大的节点 s,用节点s的值代替节点p的值,然后删除节点s,节点s必属于上述①、②情况之一。
【函数5-5】
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->Rehild;
}
if(!p)retrn -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;
}
选项
答案
(1) p&&p->data!=e或p&&(*p).data!=e (2) p->Lchild或(*p).Lchild (3) s->Rchild或(*s).Rchild (4) p->Lchild或(*p).Lchild (5) p==pp->Lchild或p==(*pp).Lchild
解析
本题考查二叉查找树上的删除操作,题中已清楚说明了删除操作的算法。
删除一个节点首先需要进行查找,只有找到了欲删除的节点才谈得上删除。程序首先让指针p指向根节点,通过while循环进行查找。循环体内,先用pp记录p,这样pp最终将记录p的父节点,然后如果得删关键字e小于当前节点p的键字值,则p赋值为p->Lchild,即往左子树继续查找,否则,p赋值为p->Rchild,即往右子树继续查找。显然,循环体内并未处理关键字正好等于当前节点p的键值的情况,因此该条件应体现在while循环的终止条件中。故空(1)应填“p&&p->data!=e”。
空(2)比较简单。此处是处理情况③,而根据算法描述,情况③要在左子树中寻找键值最大的节点,亦即左子树中最右的节点(右节点为NULL),并保存在s中。故空(2)应填 p->Lchild。空(3)所在while循环正是用来在p的左子树中查找右节点为NULL的节点的,故空(3)应填s->Rchild。
接下来处理情况①和情况②,这两种情况本身是比较简单的,但在此将两者合并在一起处理,增加了难度。首先用变量c来存储用来替换p的节点,然后分情况将c正确插入。
当要删除的节点为叶节点时(情况①),其p->Lchild和p->Rchild均为NULL;当要删除的节点只有一个子节点时(情况②),若仅有左子节点,则p->Rchild为NULL,若仅有右子节点,则p->Lchild为NULL。所以当p->Lchild不为NULL时,说明是情况②:仅有左节点情况,故c=p->Lchild。当p->Lchild为NULL时,则有两种可能:p->Rchild也为NULL,则对应情况①叶节点情况;p->Rchild不为NULL,则对应情况②仅有右节点情况。但这两种情况下,亦可以统一采用c=p->Rchild,因为当p是叶节点时用NULL代替其位置即可。所以空(4)应填“p->Lchild!=NULL”。
接下来就要将c正确插入到原二叉树中。上面已经提到,pp指向的是p节点的父节点。因此若p是pp的左节点,则将c作为pp的左子节点插入,因此空(5)应填“p==pp->Lchild”。
转载请注明原文地址:https://kaotiyun.com/show/CBRZ777K
本试题收录于:
软件设计师上午基础知识考试题库软考中级分类
0
软件设计师上午基础知识考试
软考中级
相关试题推荐
RAID级别是指磁盘阵列中硬盘的组合方式,不同级别的RAID为用户提供的磁盘阵列在性能上和安全性的表现上也有不同。图8-10示意的是(63)磁盘阵列的工作原理图。
目前最流行的无线接入技术类型有哪几种?无线局域网可以在普通局域网基础上通过无线hub、无线接入站(accesspoint,ap,亦译作网络桥通器)、无线网桥、无线modem及无线网卡等来实现。在业内无线局域网多种标准并存,太多的ieee802.11标准
假设用户Q1有2000台主机,则必须给他分配(53)个C类网络,如果分配给用户Q1的超网号为200.9.64.0,则指定给Q1的地址掩码为(54);假设给另一用户Q2分配的C类网络号为200.9.16.0~200.9.31.0,如果路由器收到一个目标地址为
与routeprint具有相同功能的命令是____________。
SCSI是一种通用的系统级标准输入/输出接口,其中(65)标准的数据宽度16位,数据传送率达20MB/s。大容量的辅助存储器常采用RAID磁盘阵列。RAID的工业标准共有六级。其中,(66)是镜像磁盘阵列,具有最高的安全性;(67)是无独立校验盘的奇偶校验
码字之间的海明距离是指(148),一个码(码是一些码字组成的集合)的海明距离是所有不同码字的海明距离的(149)。如果要检查出d位错,那么码的海明距离是(150)。如果信息长度为6位,要求纠正1位错,按照海明编码;需要增加的校验位是(151)。以太网中使用
程序运行过程中常使用参数在函数(过程)间传递信息,引用调用传递的是实参的(9)。
视频信息是连续的图像序列,(5)是构成视频信息的基本单元。
阅读下列函数说明和C代码,回答下面问题。[说明]冒泡排序算法的基本思想是:对于无序序列(假设扫描方向为从前向后,进行升序排列),两两比较相邻数据,若反序则交换,直到没有反序为止。一般情况下,整个冒泡排序需要进行众(1≤k≤n)趟冒泡操作,冒泡排序
多媒体技术的关键在于解决动态图像和声音的存储与传输问题。若不经压缩,以 VGA640×480点阵存储一幅256色的彩色图像大约需(56)MB存储空间,以9600bit/s的速度传输这幅图像大约需(57)秒,按我国电视PAL标准每秒25幅,一张650MB的光
随机试题
黄芩和黄柏都具有的功效是
传染性单核细胞增多症患儿一般不包括下面哪个条件
对疑诊支气管内膜结核的病人,首选进行下列哪项检查
患者,男性,40岁,中上腹部剧烈疼痛、恶心、呕吐、发热10h急诊人院。查:血淀粉酶显著升高,以急性胰腺炎急诊手术,术中空肠造口。术后诊断:急性坏死性胰腺炎。患者恢复口服饮食的初期,需禁用的食物是
吊杆距主龙骨端部距离不得大于()。
关于巨额赎回,下列说法错误的有( )。
企业从银行借入短期借款,不会导致实际利率高于名义利率的利息支付方式是()。
2004年,春城白药开始尝试进军日化行业。而此时日化行业的竞争已经异常激烈。B公司、L公司、D公司、H公司等国际巨头们凭借其规模经济、品牌、技术、渠道和服务等优势,基本占领了C国日化行业的高端市场,占据了C国牙膏市场60%以上的份额;清雅公司、蓝天公司等本
甲股份有限公司(简称甲公司)为主板上市公司,主营业务为生产、销售稀土合金镀层钢丝、钢绞线和PC钢绞线等金属制品,由于甲公司股权比例较为分散,因此不存在实际控制人。2017年2月1日,甲公司公告称因筹划重大资产重组事项,公司股票停盘。甲公司准备与A有限责任公
一次公开观摩课上一位二十多年教龄的女老师,在课堂上并没有频频去叫那些反应机灵、学懂会用的好学生,而是善于捕捉那些不敢大胆发言,没有勇气回答问题的差生的一闪之念。一位女孩刚鼓起勇气抬起头,就被老师叫起来回答,结果由于心理过于紧张,急得满头大汗,不知所措。这时
最新回复
(
0
)