首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

求二叉树的宽度?解决方案

2012-02-27 
求二叉树的宽度?求二叉树的宽度?给出详细的步骤, 并给出注解...[解决办法] #define M 10 //假设二叉树最多

求二叉树的宽度?
求二叉树的宽度?

给出详细的步骤, 并给出注解...


[解决办法]
#define M 10 //假设二叉树最多的层数
 int Width(BinTree T)

int static n[M];//向量存放各层结点数
int static i=1;
int static max=0;//最大宽度
if(T)
{
if(i==1) //若是访问根结点

n[i]++; //第1层加1
i++; //到第2层
[解决办法]
if(T->lchild)//若有左孩子则该层加1
n[i]++;
if(T->rchild)//若有右孩子则该层加1
n[i]++;
}
else
{ //访问子树结点
i++; //下一层结点数
if(T->lchild)
n[i]++;
if(T->rchild) 
n[i]++;
}
[解决办法]
if(max<n[i])max=n[i];//取出最大值
Width(T->lchild);//遍历左子树
i--; //往上退一层
Width(T->rchild);//遍历右子树
}
return max;
}//算法结束

热点排行