LeetCode 110. 平衡二叉树

Posted by cody1991 on August 9, 2020

简单思路:根据 “一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。” 递归算每个节点的左右节点的高度,判断是否超出 1 来决定是否为平衡二叉树

110. 平衡二叉树

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
 * 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) {
  if (!root) return true;
  if (!isBalanced(root.left) || !isBalanced(root.right)) return false;
  if (Math.abs(height(root.left) - height(root.right)) > 1) {
    return false;
  }
  return true;
};
function height(root) {
  if (!root) return 0;
  return Math.max(height(root.left), height(root.right)) + 1;
}