给定一个二叉树,判断它是否是高度平衡的二叉树。

    本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

    示例 1:

    110平衡二叉树 - 图1

    1. 输入:root = [3,9,20,null,null,15,7]
    2. 输出:true

    示例 2:

    110平衡二叉树 - 图2

    输入:root = [1,2,2,3,3,null,null,4,4]
    输出:false
    

    示例 3:

    输入:root = []
    输出:true
    

    提示:

    • 树中的节点数在范围 [0, 5000]
    • -104 <= Node.val <= 104
    class Solution {
    public:
        // 返回以该节点为根节点的二叉树的高度,如果不是二叉搜索树了则返回-1
        //返回-1可以一直往上传递,利用好这一点
        int getHeight(TreeNode* node) {
            if (node == NULL) {
                return 0;
            }
            int leftHeight = getHeight(node->left);
            if (leftHeight == -1) return -1;
            int rightHeight = getHeight(node->right);
            if (rightHeight == -1) return -1;
            return abs(leftHeight - rightHeight) > 1 ? -1 : 1 + max(leftHeight, rightHeight);
        }
        bool isBalanced(TreeNode* root) {
            return getHeight(root) == -1 ? false : true;
        }
    };