一棵二叉树的繁茂度定义为R层结点数的最大值与树的高度的乘积。编写一个算法求二叉树的繁茂度。

admin2013-12-31  49

问题 一棵二叉树的繁茂度定义为R层结点数的最大值与树的高度的乘积。编写一个算法求二叉树的繁茂度。

选项

答案typedef struct BiTNode{ TElemType data; struct BiTNode*ichild;*rchild; //左、右孩子指针 }BiTNode,*BiTree; typedef struct{ BiTNode node; int layer; }BTNRecord; //包含结点所在层次的记录类型 int FanMao(Bitree T){ int count[MAx]; //count数组存放每一层的结点数 InitQueue(Q); //Q的元素为BTNRecord类型 EnQueue(Q,{T,0}); while(!QueueEmpty(Q)) { //利用层序遍历来统计各层的结点数 DeQueue(Q,r); count[r.layer]++: if(r.node×ichild) EnQueue(Q,{r.node×ichild,r.layer+1}); if(r.node×rchild) EnQueue(Q,{r.node×rchild,r.layer+1)); } h=r.1ayer; //最后一个队列元素所在层就是树的高度 for(maxn=count[0],i=1;count[i];i++) if(count[i]>maxn) maxn=count[i]; //求层最大结点数 return h*maxn; }

解析
转载请注明原文地址:https://kaotiyun.com/show/9vxi777K
0

最新回复(0)