计算二叉树中每个节点的平衡因子

思想:递归的计算每个节点的左子树与右子树的深度,然后左子树深度-右子树深度即为平衡因子

int Depth(BiTree T)
{
int l=0,r=0;
int *p;
p=T;          //p指向当前树T
if(p==NULL)
  return 0;
else
{
l=Depth(p->lchild);      //遍历左子树
r=Depth(p->rchild);        //遍历右子树
return (l>r?l:r)+1;       //左子树与右子树个数多的为当前树的深度
}
}
int bf(BiTree &T)
{
int LNum,RNum;     //记录左右子树的度
if(T)
{
 bf(T->lchild);       //从树的底部开始计算
 bf(T->rchild):
 LNum=Depth(T->lchild);      //当前节点左子树的度
 RNum=Depth(T->rchild);  //当前节点右子树的度
 T->bf=LNum-RNum;     //当前节点的平衡因子
}
}
  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值