2006-d-三
//分别求出一个结点的左右孩子结点的高度做差即为平衡因子
int depth(BTNode *bt)
{
int r,l;
if(bt==NULL) return 0;
else
{
l=depth(bt->lchild);
r=depth(bt->rchild);
return (l>r?l:r)+1;
}
}
int balance(BTNode *T,int n)//n初始传入值为0
{
int l,r;
if(T!=NULL)
{
balance(T->lchild,n);
balance(T->rchild,n);
l=depth(T->lchild);
r=depth(T->rchild);
if(l+r>0) ++n;//记录非叶子结点个数
printf("%d",l-r);//打印平衡因子
}
return n;
}