class Solution {
public:
// 平衡二叉树的定义
// 1、必须是二叉排序树
// 2、每个结点的左子树和右子树的深度差的绝对值小于等于1
// 递归求二叉树的深度
int levelDepth(TreeNode* root)
{
if(root == NULL)
{
return 0;
}
// 返回较大的一个
return levelDepth(root->left)>levelDepth(root->right) ? levelDepth(root->left)+1 : levelDepth(root->right)+1;
}
bool IsBalanced_Solution(TreeNode* pRoot)
{
if(pRoot == NULL)
{
return true;
}
else
{
if(abs(levelDepth(pRoot->left)-levelDepth(pRoot->right)) > 1)
{
// 如果左子树和右子树的深度差的绝对值大于1,则返回false
return false;
}
}
// 递归判断
return (IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right));
}
};