【leetcode】剑指 Offer 55 - II. 平衡二叉树(js实现)

1. 题目

剑指 Offer 55 - II. 平衡二叉树
【leetcode】剑指 Offer 55 - II. 平衡二叉树(js实现)_第1张图片

2. 思路

  1. 先定义一个计算二叉树深度的方法
  2. 判断二叉树是否同时有左右子树并且左右子树的差值<=1,如果是叶子结点,则说明判断到最后,就返回true

3. 代码实现

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isBalanced = function(root) {
    function maxDepth(root) {
        let res = 0
        if (root === null) return res
        let left = maxDepth(root.left),
            right = maxDepth(root.right)
        return Math.max(left, right) + 1
    }
    // console.log(maxDepth(root))
    if (root === null) return true
    return isBalanced(root.left) && isBalanced(root.right) && Math.abs(maxDepth(root.left) - maxDepth(root.right)) <= 1
};

4. 参考

JavaScript版解题思路

你可能感兴趣的:(javascript,leetcode,开发语言)