网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

阅读以下说明、图和C代码。

【说明】

一般的树结构常采用孩子-兄弟表示法表示,即用二叉链表作树的存储结构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。例如,图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*/


参考答案

更多 “ 阅读以下说明、图和C代码。【说明】一般的树结构常采用孩子-兄弟表示法表示,即用二叉链表作树的存储结构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。例如,图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*/ ” 相关考题
考题 请认真阅读以下函数说明、图及C程序,将程序段中(1)~(7)空缺处的语句填写完整。[说明]一般的树结构常采用孩子—兄弟表示法表示,即用二叉链表做树的存储结构,链表中节点的两个链域分别指向该节点的第一个孩子节点和下一个兄弟节点。例如,如图1-15(a)所示树的孩子—兄弟表示如图1-15(b)所示。函数LevelTraverse()的功能是对给定树进行层序遍历。例如,对如图1-15所示的树进行层序遍历时,节点的访问次序为D B A E F P C。对树进行层序遍历时使用了队列结构,实现队列基本操作的函数原型如表1-11所示。Bool、Status类型定义如下:树的二叉链表节点定义如下:[C函数程序]

考题 二叉树如右图所示,若进行顺序存储(即用一维数组元素存储该二叉树中的结点且通过下标反映结点间的关系,例如,对于下标为i的结点,其左孩子的下标为2i、右孩子的下标为2i+1),则该数组的大小至少为( );若釆用三叉链表存储该二叉树(各个结 点包括结点的数据、父结点指针、左孩子指针、右孩子指针),则该链表的所有结点中空指针的数目为( )。A.6 B.10 C.12 D.15 A.6 B.8 C.12 D.14

考题 对于一般的树结构,可以采用孩子-兄弟表示法,即每个结点设置两个指针域,一个指针(左指针)指示当前结点的第一个孩子结点,另一个指针(右指针)指示当前结点的下一个兄弟结点。某树的孩子-兄弟表示如下图所示。以下关于结点D与E的关系的叙述中,正确的是( )。A.结点D与结点E是兄弟B.结点D与结点E的祖父结点C.结点E的父结点与结点D的父结点是兄弟D.结点E的父结点与结点D是兄弟

考题 对于一般的树结构,可以采用孩子一兄弟表示法,即每个结点设置两个指针域,一个指针(左指针)指示当前结点的第一个孩子结点,另一个指针(右指针)指示当前结点的下一个兄弟结点。某树的孩子一兄弟表示如下图所示。以下关于结点D与E的关系的叙述中,正确的是( )。A.结点D与结点E是兄弟B.结点D是结点E的祖父结点C.结点E的父结点与结点D的父结点是兄弟D.结点E的父结点与结点D是兄弟

考题 对于一般的树结构,可以采用孩子-兄弟表示法,即每个结点设置两个指针域,一个指针(左指针)指示当前结点的第一个孩子结点,另一个指针(右指针)指示当前结点的下一个兄弟结点。某树的孩子-兄弟表示如下图所示。以下关于结点D与E的关系的叙述中,正确的是(40)。 A. 结点D与结点E是兄弟 B. 结点D与结点E的祖父结点 C.结点E的父结点与结点D的父结点是兄弟 D.结点E的父结点与结点D是兄弟

考题 某二叉树如图所示,若进行顺序存储(即用一维数组元素存储该二叉树中的结点且通过下标反映结点间的关系,例如,对于下标为i的结点,其左孩子的下标为2i、右孩子的下标为2i+1),则该数组的大小至少为(58);若采用三叉链表存储该二叉树(各个结点包括结点的数据、父结点指针、左孩子指针、右孩子指针),则该链表的所有结点中空指针的数目为(59)。 A.6 B.8 C.12 D.14

考题 某二叉树如图所示,若进行顺序存储(即用一维数组元素存储该二叉树中的结点且通过下标反映结点间的关系,例如,对于下标为i的结点,其左孩子的下标为2i、右孩子的下标为2i+1),则该数组的大小至少为(58);若采用三叉链表存储该二叉树(各个结点包括结点的数据、父结点指针、左孩子指针、右孩子指针),则该链表的所有结点中空指针的数目为(59)。 A.6 B.10 C.12 D.15

考题 利用二叉链表存储树,则结点的右指针是____________。A.指向结点的第一个孩子B.指向结点的第二个孩子C.指向结点的兄弟D.指向结点的双亲

考题 若用孩子兄弟链存储结构来存储具有m个树叶、n个分支结点的树,则孩子兄弟链存储结构中有 个右指针域为空的结点。