平衡二叉树,是一种二叉排序树,其中每个结点的左子树和右子树的高度差至多等于1。它是一种高度平衡的二叉排序树。高度平衡?意思是说,要么它是一棵空树,要么它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。
实现代码:
class Solution {
public:
//求树的深度
int GetHeightR(TreeNode *pRoot){
if(pRoot==NULL){
return 0;
}
int left=GetHeightR(pRoot->left);
int right=GetHeightR(pRoot->right);
return (left>right?left:right)+1;
}
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot==NULL){
return true;
}
int left=IsBalanced_Solution(pRoot->left);
if(left==0){
//左子树不平衡
return false;
}
int right=IsBalanced_Solution(pRoot->right);
if(right==0){
//右子树不平衡
return false;
}
//左右子树都平衡
int leftH= GetHeightR(pRoot->left);
int rightH= GetHeightR(pRoot->right);
if(leftH-rightH <=1&&leftH-rightH >=-1){
return true;
}
else
{
return false;
}
// return IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right);
}
};