求二叉树每一层的宽度
void LevelWidth(BiTree T, int a[], int h) //求每一层的宽度
{ //第一次调用为LevelWidth(T,a,1);
if(T!=NULL)
{
a[h] += 1;
LevelWidth(T->lchild, a, h + 1);
LevelWidth(T->rchild, a, h + 1);
}
}
求二叉树的宽度(结合上面代码)
int Width(BiTree T) //求二叉树的宽度
{
int a[MaxSize + 1], h = 1;
for (int i = 0; i <= MaxSize; i++)
a[i] = 0;
LevelWidth(T, a, h); //调用求每一层宽度的函数,把宽度保存在数组a[]里
int wid = a[0];
for (int i = 1; i <= MaxSize; i++) //遍历数组a[i]求最大值,即树的宽度
if (a[i] > wid)
wid = a[i];
return wid;
}
王道数据结构第四章归纳总结的题,这个办法比用队列来的简单,容易理解
老弟!赶紧给?点赞