首发于 语雀@blueju

    https://leetcode-cn.com/problems/balanced-binary-tree/

    2022年4月19日

    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 balance = true
    15. function traverse(root) {
    16. if (root === null)
    17. return 0
    18. // if (balance === false)
    19. // return -800
    20. let leftMaxHeight = traverse(root.left)
    21. let rightMaxHeight = traverse(root.right)
    22. if (Math.abs(rightMaxHeight - leftMaxHeight) > 1) {
    23. balance = false;
    24. }
    25. let xiangcha = Math.max(leftMaxHeight, rightMaxHeight)
    26. return xiangcha + 1
    27. }
    28. traverse(root)
    29. return balance
    30. };

    2022年4月20日
    耗时10分钟

    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. function traverse(root) {
    15. if (root === null)
    16. return 0
    17. let leftHeight = traverse(root.left)
    18. let rightHeight = traverse(root.right)
    19. if (Math.abs(leftHeight - rightHeight) > 1) {
    20. balance = false
    21. }
    22. return 1 + Math.max(leftHeight, rightHeight)
    23. }
    24. if (root === null)
    25. return true
    26. let balance = true
    27. traverse(root)
    28. return balance
    29. };