判断二叉树是不是AVL平衡树


判断是不是AVL平衡树

如果为空,则是

如果不为空,左右子树都是AVL且左右相差不大于1,则是

注意:主函数,传递参数时高度设置变量

	cout<<"T是否AVL平衡树:"<<endl; 
        int height=0;
	if(IsAvl(T,height))
		cout << "是AVL平衡树";
	else
		cout << "不是AVL平衡树";
	cout<<endl;
	


/**************************判断是不是AVL平衡树****************************/
bool IsAvl(BiTreeNode* &T,int &height)//还要判断左右子树高度是否差1
{
	if(T == NULL)
	{
		height = 0;
		return true;
	}

	int heightLeft;
	bool resultLeft = IsAvl(T->lchild,heightLeft);
	int heightRight;
	bool resultRight = IsAvl(T->rchild,heightRight);

	if(resultLeft && resultRight && abs(heightLeft - heightRight)<=1)//如果左右子树都为平衡树且高度差不大于1
	{
		height = max(heightLeft, heightRight)+1;
		return true;
	}
	else
	{
		height = max(heightLeft, heightRight) + 1;  
        return false;  
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值