第4题
【说明】
一般的树结构常采用孩子-兄弟表示法表示,即用二叉链表作树的存储结构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。例如,图10-8(a)所示的树的孩子-兄弟表示如图10-8(b)所示。
函数LevelTraverse()的功能是对给定树进行层序遍历。例如,对图10-1所示的树进行层序遍历时,结点的访问次序为D B A E F P C。
对树进行层序遍历时使用了队列结构,实现队列基本操作的函数原型如下表所示:
Bool、Status类型定义如下:
typedef enum { FALSE=0,TRUE=1 } Bool;
typedef enum { VERFLOW=-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 tempQ;
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*/
第9题
为便于存储和处理一般树结构形式的信息,常采用孩子—兄弟表示法将其转换成二叉树(左子关系表示父子、右子关系表示兄弟),与下图所示的树对应的二叉树是(53)。
A.
B.
C.
D.
【我提交的答案】: |
【参考答案与解析】: 正确答案:A |
解析:本题考查一般树结构的存储和树与二叉树的转换。树的孩子兄弟表示法又称为二叉链表表示法,即在链表的结点中设置两个指针域,分别指向该结点的第一个孩子和下一个兄弟,如此,就可将一棵树转换为一棵二叉树。
请问A是不是错的呀?根据:“左孩子,右兄弟”,6应该是5的右子树,7应该是4的左子树吧?求解!
第10题
为便于存储和处理一般树结构形式的信息,常采用孩子—兄弟表示法将其转换成二叉树(左子关系表示父子、右子关系表示兄弟),与下图所示的树对应的二叉树是(53)。
A.
B.
C.
D.
【我提交的答案】: |
【参考答案与解析】: 正确答案:A |
解析:本题考查一般树结构的存储和树与二叉树的转换。树的孩子兄弟表示法又称为二叉链表表示法,即在链表的结点中设置两个指针域,分别指向该结点的第一个孩子和下一个兄弟,如此,就可将一棵树转换为一棵二叉树。
感觉这个题没有正确答案,节点4应该是节点3的右孩子
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!