首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点;否则,从树根的左子树根出发,沿结点的左孩子分支向下查找,直到某个结点不存在左孩
阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点;否则,从树根的左子树根出发,沿结点的左孩子分支向下查找,直到某个结点不存在左孩
admin
2010-01-15
38
问题
阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点;否则,从树根的左子树根出发,沿结点的左孩子分支向下查找,直到某个结点不存在左孩子时为止,该结点即为此二叉树的“最左下”结点。例如:图13-26所示的以A为根的二叉树的“最左下”结点为D,以C为根的子二叉树中的“最左下”结点为C。
二叉树的结点类型定义如下:
typedef struct BSTNode{
int data;
struct BSTNode * lch,* rch;//结点的左、右孩子指针
} * BSTree;
代码13-7中,函数BSTree Find_Del(BSTreeroot)的功能是:若root指向一棵二茶树的根结点,则找出该结点的右子树上的“最左下”结点*p,并从树中删除以*p为根
的子树,函数返回被删除子树的根结点指针;若该树根的右子树上不存在“最左下”结点,则返回空指针。
【代码13-7】
BSTree Find_Del(BSTree root)
{
BSTree p,pre;
If(! root) / * root指向的二叉树为空树*/
return NULL;
(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;/ * 删除以“最左下”结点为根的子树*/
return p;
}
选项
答案
(1)p=root->rch (2)pre=root (3)p->lch (4)pre (5)pre->lch
解析
此题是一个关于二叉树操作的问题,首先来分析一下题目中对函数功能的描述。
BSTree Find_Del(BSTree root)功能是找出输入的二叉树的右子树上的“最左下”结点,删除以这个结点为根的子树并返回此结点的指针,如果二叉树的右子树不存在“最左下”结点,则返回空指针。
从(1)空所在的注释可知该空要填写的语句的功能是令指针p指向根结点的右子树,从二叉树的结点类型定义可知右孩子的指针为* rch,则第(1)空应该为:p=root->rch。
接着看下面这段代码:
if(!p)
return NULL;
(2); / * 设置pre的初值*/
while(p->lch){/ * 查找“最左下”结点*/
pre=p;
p=(3);
}
从注释可知这个循环的功能是查找二叉树根结点的右子树的“最左下”结点,从函数的返回指针为p可知,第(3)空的指针p应该总是指向左结点的,循环的目的是层层深入,而 pre指针则是p的前趋结点,在删除“最左下”结点时,pre将起到重要作用,所以第(2)空 pre指针的初值应该为二叉树的根结点:pre=root,第(3)空应该为:p->lch。
从第(4)空后面的注释可知if语句是用来判断循环后所求的“最左下”结点是不是存在,如果存在则删除这个以“最左下”结点为根的树,从而得出空(4)和空(5)应该为:pre和 pre->lch。
综上所述,关注程序的注释是非常重要的,它对解题提供了许多有用的信息。
转载请注明原文地址:https://jikaoti.com/ti/kQi7FFFM
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
采用瀑布模型进行系统开发的过程中,每个阶段都会产生不同的文档。以下关于产生这些文档的描述中,正确的是(25)。
在面向对象技术中,(43)是一组具有相同结构、相同服务、共同关系和共同语义的(44)集合,其定义包括名称、属性和操作。(43)
某公司采用的软件开发过程通过了CMM2认证,表明该公司(30)。
以下关于功能测试用例的意义的叙述,正确的是(38)。①避免盲目测试并提高测试效率②令软件测试的实施重点突出、目的明确③在回归测试中无需修正测试用例便可继续开展测试工作④测试用例的通用化和复用化使软件测试易于开展
在数据库逻辑结构设计阶段,需要(20)阶段形成的(21)作为设计依据。(20)
开发专家系统时,通过描述事实和规则由模式匹配得出结论,这种情况下适用的开发语言是(19)。
软件工程概念的提出是由于______。A.计算技术的发展B.软件危机的出现C.程序设计方法学的影响D.其他工程科学的影响
V模型是具有代表意义的测试模型,以下理解正确的是______。A.V模型认为测试阶段是与开发阶段并行的B.V模型是软件开发螺旋模型的变种,它反映了测试活动与分析和设计的关系C.V模型造成需求分析阶段隐藏的问题一直到后期的验收测试才被发现D.V模型是
以下关于软件测试原则的叙述中,正确的是______。①所有软件测试都应追溯到用户需求②尽早地和不断地进行软件测试③完全测试是不可能的④测试无法发现软件潜在的缺陷⑤需要充分注意测试中的群集现象
随机试题
一家超市5个月的销售额(单位:万元)为50、52、53、55、55,销售额的极差为()。
某产盐企业是增值税一般纳税人,主要生产液体盐和固体盐销售。2015年12月发生下列业务:(1)外购制盐小工具一批,取得增值税专用发票,注明价款10000元,增值税1700元,支付该项采购运费,取得运输企业开具的增值税专用发票,注明不含税金额168元,验收
导游向旅游者索要小费的,由旅游主管部门责令退还,处2000元以上1万元以下的罚款,情节严重的,并暂扣或者吊销导游证。()
某社会工作研究方法旨在研究对象存在某方面现象的原因,提出工作策略,建构专门理论,协助其发展和提升绩效。这指的是( )方法。
解剖学研究证明了现代人(智人)起源于约13万年前的非洲。但是考古学家和人类学家一直争论的问题是:他们什么时候开始具有了智慧?什么时候开始出现了现代行为特征?有的学派坚持认为当非洲的早期人类祖先在解剖学上已经变成现代人时,他们还没有发展出来现代行为特征,这个
如图所示,等臂杠杆两端各挂一个质量相等的实心铁块和铝块(已知ρ铁>ρ铝),在空气中杠杆平衡,若将它们同时浸没在水中,杠杆将:
(2019年吉林)习近平总书记指出,我国历朝历代在吏治方面留下了很多思想和做法,比如,________中说“国有贤良之士众,则国家之治厚;贤良之士寡,则国家之治薄”,________说“宰相必起于州部,猛将必发于卒伍”,________说“故天将降大任于斯
某二叉树共有400个节点,其中有100个度为1的节点,则该二叉树中的叶子节点数为()
【T1】Whiletherearealmostasmanydefinitionsofhistoryastherearehistorians,modernpracticemostcloselyconformstoone
A、Hewillgotovisithisoldclassmates.B、Hewillgotothecapitalforfurtherstudy.C、Hewillgotothecapitalonvacation
最新回复
(
0
)