好文档 - 专业文书写作范文服务资料分享网站

南京工业大学数据结构作业参考答案作业

天下 分享 时间: 加入收藏 我要投稿 点赞

第四次作业

1. 设如下图所示的二叉树B的存储结构为二叉链表,root为根指针,结点结构为:(lchild,data,rchild)。其中lchild,rchild分别为指向左右孩子的指针,data为字符型,root为根指针,试回答下列问题:

(1).对下列二叉树B,执行下列算法traversal(root),试指出其输出结果; C的结点类型定义如下: struct node {char data;

struct node *lchild, rchild; };

C算法如下:

void traversal(struct node *root) {if (root)

{printf(“%c”, root->data); traversal(root->lchild); printf(“%c”, root->data); traversal(root->rchild); } }

(2).假定二叉树B共有n个结点,试分析算法traversal(root)的时间复杂度。

A

B D

C F G 二叉树B

E

2. 试写出如图所示的二叉树分别按先序、中序、后序遍历时得到的结点序列。

3.把如图所示的树转化成二叉树。

1 / 4

4.画出和下列二叉树相应的森林。

5.编写按层次顺序(同一层自左至右)遍历二叉树的算法 (或:按层次输出二叉树中所有结点) 。

1. 设如下图所示的二叉树B的存储结构为二叉链表,root为根指针,结点结构为:(lchild,data,rchild)。其中lchild,rchild分别为指向左右孩子的指针,data为字符型,root为根指针,试回答下列问题:

(1).对下列二叉树B,执行下列算法traversal(root),试指出其输出结果; C的结点类型定义如下: struct node {char data;

struct node *lchild, rchild; };

C算法如下:

void traversal(struct node *root) {if (root)

{printf(“%c”, root->data); traversal(root->lchild); printf(“%c”, root->data); traversal(root->rchild); } }

(2).假定二叉树B共有n个结点,试分析算法traversal(root)的时间复杂度。

A

B D

C F G 二叉树B

E

解:这是“先根再左再根再右”,比前序遍历多打印各结点一次,输出结果为:A B C C E E B A D F F D G G

特点:①每个结点肯定都会被打印两次;②但出现的顺序不同,其规律是:凡是有左子树的结点,必间隔左子树的全部结点后再重复出现;如A,B,D等结点。反之马上就会重复出现。如C,E,F,G等结点。

时间复杂度以访问结点的次数为主,精确值为2*n,时间渐近度为O(n).

2 / 4

2. 试写出如图所示的二叉树分别按先序、中序、后序遍历时得到的结点序列。

答:DLR:A B D F J G K C E H I L M LDR: B F J D G K A C H E L I M LRD:J F K G D B H L M I E C A

3.把如图所示的树转化成二叉树。

答:注意全部兄弟之间都要连线(包括度为2的兄弟),并注意原有连线结点一律归入左子树,新添连线结点一律归入右子树。 A B

E C

K F H D L G I

M J

4.画出和下列二叉树相应的森林。

答:注意根右边的子树肯定是森林, 而孩子结点的右子树均为兄弟。

5.编写按层次顺序(同一层自左至右)遍历二叉树的算法 (或:按层次输出二叉树中所有结点) 。

解:思路:既然要求从上到下,从左到右,则利用队列存放各子树结点的指针是个好办法。

3 / 4

这是一个循环算法,用while语句不断循环,直到队空之后自然退出该函数。

技巧之处:当根结点入队后,会自然使得左、右孩子结点入队,而左孩子出队时又会立即使得它的左右孩子结点入队,……以此产生了按层次输出的效果。 层序遍历二叉树的递归算法

void LayerOrder(Bitree T) //层序遍历二叉树 {

InitQueue(Q); //建立工作队列 EnQueue(Q,T);

while(!QueueEmpty(Q)) {

DeQueue(Q,p); visit(p);

if(p->lchild) EnQueue(Q,p->lchild); if(p->rchild) EnQueue(Q,p->rchild); }

}//LayerOrder

4 / 4

南京工业大学数据结构作业参考答案作业

第四次作业1.设如下图所示的二叉树B的存储结构为二叉链表,root为根指针,结点结构为:(lchild,data,rchild)。其中lchild,rchild分别为指向左右孩子的指针,data为字符型,root为根指针,试回答下列问题:(1).对下列二叉树B,执行下列算法traversal(root),试指出其输出结果;C的结点类型定义如下:struc
推荐度:
点击下载文档文档为doc格式
4261r0cg5o8iiwn479cv9uewu2s0h401e4l
领取福利

微信扫码领取福利

微信扫码分享