第7章习题及解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本章解答只给出算法描述,1~7题略。

⒈一棵度为2

⒉对于图2所示的树,试给出:

⑴双亲数组表示法示意图;

⑵孩子链表表示法示意图;

⑶孩子兄弟链表表示法示意图。

⒊画出下图所示的森林经转换后所对应的二叉树,并指出在二叉链表中某结点所对应的森林中结点为叶子结点的条件。

(3题图) (4题图)

⒋将右上图所示的二叉树转换成相应的森林。

⒌在具有n(n>1)个结点的各棵树中,其中深度最小的那棵树的深度是多少?它共有多少叶子和非叶子结点?其中深度最大的那棵树的深度是多少?它共有多少叶子和非叶子结点?

⒍画出和下列已知序列对应的树T:

树的先根次序访问序列为:GFKDAIEBCHJ;

树的后根访问次序为:DIAEKFCJHBG。

⒎画出和下列已知序列对应的森林F:

森林的先序次序访问序列为:ABCDEFGHIJKL;

森林的中序访问次序为:CBEFDGAJIKLH。

⒏对以孩子-兄弟链表表示的树编写计算树的深度的算法。

typedef struct TreeNode{

datatype data;

struct TreeNode *child, *nextsibling ;

}NodeTtpe , *CSTree;

int high(CSTree t )

{

if ( t= =NULL )

return ( 0 ) ;

(2题图)

else

{

h1=high(t->child ) ;

h2=high(t->nextsibling );

return(max(h1+1,h2));

}

}

⒐对以孩子链表表示的树编写计算树的深度的算法。算法略

⒑对以双亲链表表示的树编写计算树的深度的算法。typedef struct{

datatype data;

int parent ;

}NodeType;

int high(NodeType t[ ], int n)

{

maxh=0;

for (i=0 ;i

{

if (t[i].parent= = -1)

h=1;

else

{

s=i;

h=1;

while (t[s].parent != -1 )

{

s=t[s].parent;

h++;

}

}

if (h>maxh)

maxh=h; }

return(maxh); }

相关文档
最新文档