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));
    }
};