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

admin2013-07-12  39

问题 一棵二叉树的繁茂度定义为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(e,{T,0}); while(!QueueEmpty(Q)){ //利用层序遍历来统计各层的结点数 DeQueue(0,r); count[r.1ayer]++; if(r.node->ichild) EnQueue(Q,{r.node->ichild,r.1ayer十1}); if(r.node->rchild) EnQueue(O,{r.node->rchild,r.1ayer+1)); h=r.1ayer; //最后一个队列元素所在层就是树的高度 for(maxn=countE0],i=1;count[i];i++) if
解析 要用层次遍历以及队列来处理,可增设一个宽度计数器,在统计完每一层的结点个数之后,再从计数器中挑出最大值。
转载请注明原文地址:https://jikaoti.com/ti/nVajFFFM
0

最新回复(0)