首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
一般的树结构常采用孩子-兄弟表示法表示,即用二叉链表作为树的存储结构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。例如,如图15-1(a)所示的树的孩子.兄弟表示如图15一1(b)所示。 函数LevelTraVerse()的
一般的树结构常采用孩子-兄弟表示法表示,即用二叉链表作为树的存储结构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。例如,如图15-1(a)所示的树的孩子.兄弟表示如图15一1(b)所示。 函数LevelTraVerse()的
admin
2017-08-31
59
问题
一般的树结构常采用孩子-兄弟表示法表示,即用二叉链表作为树的存储结构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。例如,如图15-1(a)所示的树的孩子.兄弟表示如图15一1(b)所示。
函数LevelTraVerse()的功能是对给定树进行层序遍历。例如,当对图15.1(a)中的树进行层序遍历时,结点的访问次序为DBAEFPC。
对树进行层序遍历时使用了队列结构,实现队列基本操作的函数原型如表15一1所示。
Bool、Status类型定义如下:
typedef enum{FALSE=0,TRUE=1)Bool;
typedef enum{OVERFLOW=一2,UNDERFLOW=一1,ERROR=0,OK=1}Status;
树的二叉链表结点定义如下:
typedef struct Node{
char data;
struct Node*firstchild,*nextbrother;
}Node,*TreeNode;
【函数代码】
Status LevelTraverse(TreeNode root)
{/*层序遍历树,树采用孩子一兄弟表示法,root是树根结点的指针*/
Queue temQ ;
TreeNode ptr, brOtherptr;
if(!root)
return ERROR;
InitQueue(&tempQ);
(1);
brotherptr=root一>nextbrother;
while( brotherptr ){
EnQueue( &tempQ, brotherptr);
(2),
}/*end-while*/
while( (3) ){
(4),
printf(”%c\t”,ptr一>data);
if( (5) )continue;
(6),
brotherptr=ptr一>firstchild一>nextbrother;
while(brotherptr){
EnQueue(&tempQ,brotherptr);
(7);
}/*end—while*/
}/*end-while*/
return OK;
}/*LevelTraverse*/
选项
答案
(1)EnQueue(&tempQ,root)。 (2)brotherptr=brotherptr->nextbrother。 (3)!IsEmpty(tempQ)。 (4)DeQueue(&tempQ,&ptr)。 (5)!ptr->firstchild。 (6)EnQueue(&tempQ,ptr->firstchild)。 (7)brotherptr=brotherptr->nextbrother。
解析
解答此题的关键在于理解用队列层序遍历树的过程。算法的流程是这样的:首先将树根结点入队,然后将其所有兄弟结点入队(当然,由于是根结点,故无兄弟结点);完成这一操作以后,便开始出队、打印;在打印完了之后,需要进行一个判断,判断当前结点有无孩子结点,若有孩子结点,则将孩子结点入队,同时将孩子结点的所有兄弟结点入队;完了以后继续进行出队操作,出队后再次判断当前结点是否有孩子结点,并重复上述过程,直至所有结点输出。
这一描述可能过于理论,难以理解,接下来以本题为例来说明此过程。首先将树根结点D入队,并同时检查是否有兄弟结点,对于兄弟结点应一并入队。这里的D没有兄弟结点,所以队列此时应是:
D
接下来执行出队操作。D出队,出队以后检查D是否有子结点,经检查,D有子结点B,所以将B入队,同时将B的兄弟结点:A和E按顺序入队。得到队列:
B
A
E
接下来再执行出队操作。B出队,同时检查B是否有子结点,B无子结点,所以继续执行出队操作。A出队,同时检查A是否有子结点,A有子结点F,所以将F入队,同时将F的兄弟结点P入队。得到队列:
E
F
P
接下来再次执行出队操作。E出队,E有子结点C,所以C入队。得:
F
P
C
接下来再次执行出队操作。F出队,F无子结点,继续出队操作,P出队,仍无子结点,最后C出队,整个过程结束。
通过对算法的详细分析,现在便可轻松得到答案。(1)应是对根结点root执行入队操作,即.EnQueue(&tempQ,root)。(2)在一个循环当中,循环变量是brotherptr,此变量无语句对其进行更新,所以(2)必定是更新brotherptr。结合前面的算法分析可知(2)应填:brotherptr=brotherptr->nextbrother。(3)、(4)加上后面的语句“printf(“%c\t”,ptr->data);”是控制数据的输出,这些数据应是从队列中得到,所以此处必有出队操作,同时在出队之前应判断队列是否为空,所以(3)、(4)填:!IsEmpty(tempQ)和DeQueue(&tempQ,&ptr)。(5)实际上是问“在什么情况下,要持续进行出队操作?”,前面的算法分析中已指出:若出队结点无子结点,则继续进行出队操作,所以(5)填!ptr->flrstchild。(6)和(7)所在的语句段的功能是将刚出队结点的子结点及其兄弟结点入队,所以(6)填:EnQueue(&tempQ,ptr->firstchild)。(7)和(2)相同,填brotherptr=brotherptr->nextbrother。
转载请注明原文地址:https://kaotiyun.com/show/eODZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
如果以前已经配置过这台服务器为VPN服务器,现在需要重新配置,该怎么操作?Windows2000服务器配置完毕后,系统默认任何用户均都可以拨入连接到服务器上吗?
在OSI参考模型中,NetBIOS工作在哪一层?Windows组网中采用什么工具来实现域的创建和管理?在什么情况下需要设置“主域”?
阅读以下说明,回答问题1~3。【说明】Windows组网是指把Windows终端和服务器连接起来。如图5-6所示给出了在Windows操作系统中的典型LAN配置。
根据该单位防火墙与外部网络相关的网络连接参数,请将以下命令行中(1)~(4)空缺处的内容填写完整,以完成对防火墙相应的网络接口进行地址初始化的配置。FireWall(config)#ipaddressinside(1)(2)
上述配置中是否有问题?请指出并说明理由。解释配置中画线部分内容含义?
依据给出的可选设备进行选型,将(1)~(5)处空缺的设备名称填写在相应位置将(6)~(8)处空缺的介质填写在相应位置(所给介质可重复选择)。
ISDN分哪几层?NT2(网络终端连接设备)提供哪两种交换功能?如果ISDN收费是按每分钟计算,假如0.5元/分钟,采用ISDN基本速率接口下载1024k的文件需要付费多少?
请用100字以内的文字说明该网管软件项目采用快速原型开发方法的优缺点。项目管理就是以项目为对象的系统管理方法,通过一个临时性的专门的柔性组织,对项目进行高效率的计划、组织、指导和控制,以实现项目全过程的动态管理和项目目标的综合协调与优化。除了本题涉及到
在如图1-23所示的网络拓扑结构图中,被路由协议可以使封装后的数据包通过互连网络进行中继传输,它由(1)使用。【供选择的答案】A.PCIB.RouterA和RouterBC.Internet网D.Rcrate
请问无线局域网的工作模式有哪几种?当不使用AP时,必须把一组需要互相通信的无线网卡的什么值设为相同?
随机试题
五味子、五倍子均可用于治疗()(2006年第124题)
采用试切法加工工件,在粗铣后一般不能一次就准确地调整到精铣位置。
A.红细胞管型B.白细胞管型C.上皮细胞管型D.脂肪管型最常见于原发性肾病综合征
心肌梗死病人合并消化性溃疡,不宜选用下列哪种药物治疗()
适合我国状况的理财顾问服务流程是()。
()又称为“华德决策准则”。
阅读下面的文言文,回答后面的问题。张佶,字仲雅,本燕人,后徙华州渭南。初名志言,后改焉。父昉,殿中少监。佶少有志节,始用荫补殿前承旨,以习儒业,献文求试,换国子监丞。迁著作佐郎、监三白渠、知泾阳县。端拱初,为太子右赞善大夫。曹州民有被诬杀人者,诏往按之,
已知文法G[S]:S→A0|B1,A→S1|1,B→S0|0,该文法属于乔姆斯基定义的(18)文法,它不能产生串(19)。语言L={ambn|m≥0,n≥1)的正规表达式是(20)。一个文法G=(N,T,P,S),其中N是非终结符号的集合,
下列过程的功能是:在对多个文本框进行输入时,对第一个文本框(text1)输入完毕后用回车键使焦点跳到第二个文本框(text2),而不是用TAB键来切换。请填空。PrivateSub[11]KeyDown(KeyCodeAsIntege
Tounderstandwhyweshouldbeconcernedabouthowyoungpeopleread,ithelpstoknowsomethingaboutthewaytheabilitytore
最新回复
(
0
)