题目描述:假设二叉树采用二叉链表存储结构,设计一个算法,求非空二叉树b的宽度(即具有结点数最多的那一层的结点个数)。
分析: 每次递归时,如果当前结点不为空,就将当前层数的宽度+1,并更新最大宽度。然后递归遍历左右子树,将层数加1。 最后最大宽度在全局变量 MAX 里。
c
int MAX = -1; //存放最大宽度
int width[100]; //每层的宽度
void Width(BiTree T,int k){ //k为层数,初始值为 0
if(T == NULL)
return;
width[k]++;
MAX = MAX < count[k] ? count[k] : MAX;
Width(T->lchild,k + 1);
Width(T->rchild,k + 1);
}