二叉树的繁茂度

阜哥 2005-11-18 03:48:48
一棵二叉树的繁茂度定义为各层结点数的最大值与树的高度的乘积
请各位帮帮忙,给一个算法求出二叉树的繁茂度.
谢谢.

用C语言写,但是可以用C++的引用.
...全文
683 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qzy6 2005-11-19
  • 打赏
  • 举报
回复
int maxlayerlength(bitree t)
// 计算二叉树各层的结点数的最大值
{
bitree queue[M],p=t; //建立队列queue,为求简单,此处假设M足够大
int front,rear; //队首,队尾
int max_length=0, //最大层长
cur_length=0, //当前层长
next_length=0; //下一层长
if(t!=NULL){
front=rear=-1; //队列初始化
queue[++rear]=t; //根结点指针进队
max_length=cur_length=1;//层长初试化
next_length=0;

while(front<rear){
p=queue[++front];//出队,获取当前层一个结点
cur_length--;

if(p->l!=NULL){
queue[++rear]=p->l;//左孩子结点指针进队
next_length++;
}
if(p->r!=NULL){
queue[++rear]=p->r;//右孩子结点指针进队
next_length++;
}

if(cur_length==0){//进入下一层
cur_length=next_length;
if(cur_length>max_length)//更新最大层长
max_length=cur_length;
next_length=0;
}/*if*/

}/*while*/

}/*if*/
return max_length;
}
guyanhun 2005-11-18
  • 打赏
  • 举报
回复
利用队列,层次遍历
阜哥 2005-11-18
  • 打赏
  • 举报
回复
那请问,怎么求各层的结点数的最大值?
guyanhun 2005-11-18
  • 打赏
  • 举报
回复
int depth(bitree t)
// 计算二叉树的深度。
{
int lchilddep,rchilddep;
if(t==0)
return 0;
else
{
lchilddep=depth(t->lchild);
rchilddep=depth(t->rchild);
if(lchilddep>rchilddep)
return (lchilddep+1);
else
return (rchilddep+1);
}
}

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧