//判斷一個二叉樹是否是平衡二叉樹 返回值是樹的高度,單根高度爲1.
int isAVL(BTree T, bool & isAV)
{
isAV=true;
if(T==NULL) return 0;
else if(T->lchild==NULL&&T->rchild==NULL)
return 1;
bool lAV=true;
int l1=isAVL(T->lchild, lAV);
bool rAV=true;
int r1=isAVL(T->rchild, rAV);
if(lAV&&rAV&&abs(l1-r1)<2)
{
isAV=true;
return max(r1,l1)+1;
}
else
{
isAV=false;
cout<<endl<<"data:"<<T->data<<" right_height: "<<r1<<" left_height "<<l1<<endl;
return max(r1,l1)+1;
}
}
調用:
bool isav;
cout<<isAVL(T1,isav)<<"<-高度"<<endl;
cout<<"是否平衡樹 "<<isav<<endl;