class Solution {
public:
    int TreeDepth(TreeNode* pRoot)    //计算二叉树深度
    {
        if(pRoot == NULL)
        {
            return 0;
        }

        if(pRoot->left == NULL && pRoot->right == NULL)
        {
            return 1;
        }    

        return 1+max(TreeDepth(pRoot->left), TreeDepth(pRoot->right));
    }

    bool IsBalanced_Solution(TreeNode* pRoot) {    //判断二叉树是否为平衡二叉树
                    if(pRoot == NULL)
                        return true;
        return abs( TreeDepth(pRoot->left) - TreeDepth(pRoot->right)  ) <=1 \
            && IsBalanced_Solution(pRoot->left)&& IsBalanced_Solution(pRoot->right);
    }
};