leetCode打卡——110 Balanced Binary Tree

154 阅读1分钟

题目

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as:

a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

思路

  1. 一棵树是否平衡,等于左右子树的高度是否相差不大于1;
  2. 如果存在子树不平衡,那么这棵树也不平衡;

看了几个解题的代码,都是使用了两层递归,一层递归拿子树的高度,然后判断步骤1,外层递归循环进行上述操作,这个问题可以用一层递归即可解决问题。

var isBalanced = function(root) {
    return (run(root) !== false) 
};

var run = function(node) {
    if (!node) return 0;
    var leftHeight = run(node.left);
    var rightHeight = run (node.right);

    if (leftHeight === false || rightHeight === false || Math.abs(leftHeight - rightHeight) > 1) {
        return false;
    }
    return Math.max(leftHeight, rightHeight) + 1;
}