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

    本题中,一棵高度平衡二叉树定义为:

    一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

    示例 1:

    image.png
    输入:root = [3,9,20,null,null,15,7]
    输出:true
    示例 2:
    输入:root = [1,2,2,3,3,null,null,4,4]
    输出:false
    示例 3:

    输入:root = []
    输出:true

    1. /**
    2. * Definition for a binary tree node.
    3. * function TreeNode(val, left, right) {
    4. * this.val = (val===undefined ? 0 : val)
    5. * this.left = (left===undefined ? null : left)
    6. * this.right = (right===undefined ? null : right)
    7. * }
    8. */
    9. /**
    10. * @param {TreeNode} root
    11. * @return {boolean}
    12. */
    13. var isBalanced = function (root) {
    14. let isBalanced = true;
    15. const maxDepth = (root) => {
    16. if (!root) return 0;
    17. let leftMaxDepth = maxDepth(root.left);
    18. let rightMaxDepth = maxDepth(root.right);
    19. // 如果左右最大深度大于 1,就不是平衡二叉树
    20. if (Math.abs(rightMaxDepth - leftMaxDepth) > 1) {
    21. isBalanced = false;
    22. }
    23. return 1 + Math.max(leftMaxDepth, rightMaxDepth);
    24. }
    25. maxDepth(root)
    26. return isBalanced
    27. };

    image.png