问题 问答题

二叉树结点的平衡因子(bf)定义为该结点的左子树高度与右子树高度之差。设二叉树结点结构为:(1child,data,bf,rchild),1child,rchild是左右儿子指针;data是数据元素;bf是平衡因子,编写递归算法计算二叉树中各个结点的平衡因子。

答案

参考答案: 由定义,结点的平衡因子bf等于结点的左子树高度与右子树高度之差,设计一遍历算法,在遍历结点时,求结点的左子树和右子树的高度,然后得到结点的平衡因子。
int Height(BiTree bt)∥求二叉树bt的深度
{
int hl,hr;
if(bt==null)
return(0);
else
{
hi=Height(bt->lchild):
hr=Height(bt->rchild);
if(hl>hr)
return(hl+1):
else
return(hr+1);
}
}
void Balance(BiTree bt)∥计算二叉树bt各结点的平衡因子
{
if(bt)
{
Balance(bt->lchild);∥后序遍历左子树
Balance(bt->rchild);∥后序遍历右子树
hl=Height(bt->lchild):
hr=Height(bt->rchild);∥求左右子树的高度
bt->bf=hl-hr;∥结点的平衡因子bf
}
}

单项选择题
问答题 简答题