首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。 【说明】 函数DeleteNode(Bitree*r,inte)的功能是:在树根节点指针为r的二叉查找(排序)树上删除键值为e的节点,若删除成功,则函数返回0,否则函数返回-1。二叉查
阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。 【说明】 函数DeleteNode(Bitree*r,inte)的功能是:在树根节点指针为r的二叉查找(排序)树上删除键值为e的节点,若删除成功,则函数返回0,否则函数返回-1。二叉查
admin
2013-05-11
48
问题
阅读下列函数说明和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
软件设计师上午基础知识考试
软考中级
相关试题推荐
设有下面4条路由:172.16.129.0/24、172.16.130.0/24、172.16.132.0/24和172.16.133/24,如果进行路由汇聚,能覆盖这4条路由的地址是(45)。
ThedefactostandardApplicationProgramInterface(API)forTCP/IPapplicationsisthet•sockets”interface.AlthoughthisAPlwa
MIB对象标识符分级树根未命名,但是有3个直接后裔,分别由ISO、(1)及(2)进行管理。分级树中关于MIB-Ⅱ节点下包括10个功能组,共171个对象。在这些功能组中是一个联系各种接口的特殊节点,与接口组相配合,提供与子网类型有关的专用信息的功能组是(3)
报文摘要算法MD5的输出是(1)位,SHA-1的输出是(2)位。(2010年下半年试题)(2)
ISO/IEC9126软件质量模型中第一层定义了6个质量特性,并为各质量特性定义了相应的质量子特性。子特性__________属于可靠性质量特性。
关于明文和密文,叙述不正确的是(1)。对明文字母重新排列,并不隐藏它们的加密方法属于(2);在20世纪70年代之前使用的加密机制为(3):DES算法即采用了这种加密技术;公钥加密体制中,没有公开的是(4),下面描述正确的是(5)。(3)
使用150DPI的扫描分辨率扫描一幅3×4英寸的彩色照片,得到原始的24位真彩色图像的数据量是()Byte。
现欲实现一个图像浏览系统,要求该系统能够显示BMP、JPEG和GIF三种格式的文件,并且能够在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG和GIF三种格式的文件解析为像素矩阵,然后将像素矩阵显示在屏幕上。系统需具有较好的扩展性以
Network managers have long awaited practical voice-over-IP(VOIP)solutions. VOIP promises(71)network management and decreases cos
(71)data effectively is crucial for success in today’s competitive environment. Managers must know how to use a variety of tools
随机试题
现代汉语的基本词汇是词汇体系的核心和基础。()
两蒙的行政决策理论也被人们称为【】
上尿路结石的典型症状是()
民用住宅的层高一般不宜超过()。
有权与普通股股东一起参与本期剩余盈利分配的优先股票是()。
2016年8月,某公司销售一批原材料,开具的增值税专用发票上注明的售价为15000元,增值税税率为17%,材料成本14000元,则该企业编制会计分录时,应借记“其他业务成本”科目的金额是()元。
比赛:裁判
加强宪法实施和依宪治国,对中国特色社会主义法治体系、社会主义法治国家的建设具有重要意义。具体体现在
阅读以下说明。[说明]某公司需开发一套电子商务系统,为保证开发进度和开发质量,专门组建测试小组对开发的全过程进行测试。电子商务系统的报表处理模块要求用户输入处理报表的日期,日期限制在2003年1月至2006年12月,如日期不在此范围内,则
A、Hedoesn’thavetimelivingoncampus.B、Hewantstochangehishome.C、Hewantedmorefreetimesohemovedoncampus.D、Hep
最新回复
(
0
)