筆試程序題專項----判斷二叉樹是否平衡

//判斷一個二叉樹是否是平衡二叉樹  返回值是樹的高度,單根高度爲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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章