首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C函数,填补代码中的空缺(1)~(6),将解答填入答题纸的对应栏内。 【说明】 二叉树的宽度定义为含有结点数最多的那一层上的结点数。函数GetWidth()用于求二叉树的宽度。其思路是根据树的高度设置一个数组counter[],cou
阅读以下说明和C函数,填补代码中的空缺(1)~(6),将解答填入答题纸的对应栏内。 【说明】 二叉树的宽度定义为含有结点数最多的那一层上的结点数。函数GetWidth()用于求二叉树的宽度。其思路是根据树的高度设置一个数组counter[],cou
admin
2016-05-11
73
问题
阅读以下说明和C函数,填补代码中的空缺(1)~(6),将解答填入答题纸的对应栏内。
【说明】
二叉树的宽度定义为含有结点数最多的那一层上的结点数。函数GetWidth()用于求二叉树的宽度。其思路是根据树的高度设置一个数组counter[],counter
存放第i层上的结点数,并按照层次顺序来遍历二叉树中的结点,在此过程中可获得每个结点的层次值,最后从counter[]中取出最大的元素就是树的宽度。
按照层次顺序遍历二叉树的实现方法是借助一个队列,按访问结点的先后顺序来记录结点,离根结点越近的结点越先进入队列,具体处理过程为:先令根结点及其层次号(为1)进入初始为空的队列,然后在队列非空的情况下,取出队头所指示的结点及其层次号,然后将该结点的左子树根结点及层次号入队列(若左子树存在),其次将该结点的右子树根结点及层次号入队列(若右子树存在),然后再取队头,重复该过程直至完成遍历。
设二叉树采用二叉链表存储,结点类型定义如下:
typedef struct BTNode{
TElemType data;
struct BTNode *left,*right;
)BTNode,*BiTree;
队列元素的类型定义如下:
typedef struct {
BTNode*ptr;
int LevelNumbe r;
)QElemType;
GetWidth()函数中用到的函数原型如下所述,队列的类型名为QUEUE:
【C函数】
int GetWidth(BiTree root)
{
QUEUE Q;
QElemType a,b;
int width,height=GetHeight(root);
int i,*counter=(int*)calloc(height+l,sizeof(int)};
if( (1) ) return一1; /*申请空间失败*/
if(!root) return 0; /*空树的宽度为0*/
if( (2) ) return一1; /*初始化队列失败时返回*/
a.ptr=root; a.LeveiNumber=1;
if(!EnQueue(&Q,a))return一1 ; /*元素入队列操作失败时返回*/
while(!isEmpty(Q)){
if( (3) )return一1; /*出队列操作失败时返回*/
counter[b.LevelNumber]++;/*对层号为b.LevelNumber的结点计数*/
if(b.ptr->left){/*若左子树存在,则左子树根结点及其层次号入队*/
a.ptr=b.ptr一>left;
a.LevelNumber= (4) ;
if(!EnQueue(&Q,a))return一1;
}
i f(b.ptr一←right){/*若右子树存在,则右子树根结点及其层次号入队*/
a.ptr=b.ptr一←right;
a.LevelNumber= (5) ;
if(!EnQueue(&Q,a))return一1;
}
}
width:counter[1];
for(i=1;i<height+1;i++) /*求counter[]中的最大值*/
if( (6) ) width=counter
;
free(counter);
return width;
}
选项
答案
(1)!counter或0=counter或NULL=counter或等价表示 (2)!InitQueue(&Q) 或0=InitQueue(&Q) 或等价表示 (3)!DeQueue(&Q,&b)或0=DeQueue(&Q,&b) 或等价表示 (4)b.LevelNumber+1 或等价表示 (5)b.LevelNumber+1 或等价表示 (6)counter[i]>width 或等价表示
解析
本题考查数据结构实现和C语言基本应用。
考生需要认真阅读题目中的说明,以确定代码部分的处理逻辑,从而完成代码。
根据注释,空(1)处应填入“!counter”或其等价形式。
由于初始化队列的函数原型为“InitQueue(QUEUE*Q)”且返回值为0表示操作失败,因此调用该函数时实参应取地址,即空(2)处应填入“!InitQueue(&Q)”或其等价形式。
空(3)处需进行出队列操作,同时通过参数得到队头元素,根据说明,该空应填入“!DeQueue(&Q,&b)”或其等价形式。
出队操作后,得到的队头元素用b表示,根据队列元素的类型定义,其对应结点在二叉树中的层次号表示为b.LevelNumber,显然,其孩子结点的层次号应加1,因此空(4)和(5)处应填入“b.LevelNumber+1”。
从代码中可知变量width的作用是表示最大的层次编号,并通过顺序地扫描数组counter中的每一个元素来确定width的值,显然,空(6)处应填入“counter
>width”或其等价形式。
转载请注明原文地址:https://kaotiyun.com/show/t9jZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
图文混排是Word的特色功能之一,下列叙述中,不正确的是(46)。
以下关于数据的叙述中,________并不正确。
在幻灯片演讲稿中插入数据表或图表的主要目的是(70)。
计算机病毒是一段程序,一般隐藏在______中。
在Excel中,若单元格C5=1000、D5=50、C6=6000、D6=40,在单元格E5中输入公式“=C5*$D$5”,再将此公式复制到F6单元格中,则F6单元格的值为(54)。
在Word2003中,对当前正在编辑的文档内容进行多次剪切操作后关闭该文档,则剪贴板中的内容为______。
某公司下设4个分公司A、B、C、D,上月各分公司的销售额及其在总公司所占比例如下表所示。由于此表单受潮,有些数据看不清了,但还可以推算出来。根据推算, D公司上月的销售额为(68)万元。
若在Excel工作表中修改某个数据,与该数据有关的图表______。
阅读以下说明,回答问题1至问题6,将解答填入答题纸对应的解答栏内。【说明】在Linux下安装配置DHCP服务,DHCP服务程序/usr/sbin/dhcpd需要读取配置文件/etc/d/hcpd.conf,以下是一个DHCP配置文件的主要内容:
随机试题
一笔交易使得资产负债表中总资产项和总负债项都减少了15000元,这可能是由下列()交易产生的。
A.法律性B.有效性C.技术性D.经济性E.稳定性处方是医院药品消耗及药品经济收人结账的凭证和原始依据,体现了处方的()。
2004年8月,美国某贸易公司(以下简称“进口方”)与我国某进出口公司(以下简称“出口方”)签订合同购买一批日用瓷具,价格条件为CIF纽约,支付条件为不可撤销的跟单信用证,出口方需要提供已装船提单等有效单证。出口方随后与厦门某运输公司(以下简称“承运人”)
根据《各级人民代表大会常务委员会监督法》的规定,县级以上地方各级人民代表大会常务委员会在本级人民代表大会闭会期间,可以决定撤销本级人民政府个别副省长、自治区副主席、副市长、副州长、副县长、副区长的职务;可以撤销由它任命的本级人民政府其他。组成人员和人民法院
某公司原有设备一套,购置成本为15万元,预计使用10年,已使用5年,原有设备技术已经落后,该公司用直线法提取折旧,预计残值只有原值的10%。为提高生产率,降低成本,现该公司拟购买一套新设备,新设备购置成本为20万元,使用年限为5年,同样用直线法提取折旧,预
关于政府补助,下列说法中正确的有()。
对于珠宝、名画这类存货计价,应当采用()。
教师的职业能力素养主要包括_______、教育专业素养和综合能力素养等。
Statuses(地位,身份)aremarveloushumaninventionsthatenableustogetalongwithoneanotherandtodeterminewherewe"fit"in
ToHelptheKids,ParentsGoBacktoSchoolForafewyearsnow,everyparentofanewbornbabyintheSouthFloridadistric
最新回复
(
0
)