1.先给出树节点信息
typedef struct tree{
struct tree *lchild;
struct tree *rchlid;
int data;
}tree,* Bitree;
2.原理
判断一棵树是否为平衡二叉树,要满足每个节点的左右子树的高度之差的绝对值不大于1。
因此,我们这里可以比较每个节点的左右字数高度,判断他们差的绝对值是否满足平衡二叉树的条件即可
3.算法
求二叉树高度算法
int length_tree(Bitree T)
{
if(T!=NULL)
{
return 1+max(length_tree(T->lchild),length_tree(T->rchild))); //递归求节点高度
}
else
return 0; //空树返回0
}
然后再就是判断每个节点的左右子树高度操作了
int judge_tree(Bitree T)
{
int llength,rlength; //定义左右节点高度
if(T!=NULL)
{
llength=length_tree(T->lchild);
rlength=length_tree(T->rchild);
if(abs(llength-rlength)>0) //判断绝对值是否大于1
{return 0;}
return judge_tree(T->lchild)*judge_tree(T->rchild); //注意这里是乘法,只要出现0,就不符合条件
}
else
return 1; //T为空返回1,这个也符合条件
}
4.以上差不多已经可以实现判断操作了,如要编写成程序,自己稍加修改下即可。