Skip to content

110.平衡二叉树

js
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
function getDepth(node) {
  if (!node) return 0;
  // 获取左子树最大深度
  let leftDeep = getDepth(node.left);
  if (leftDeep === -1) return -1;

  // 获取右子树最大深度
  let rightDeep = getDepth(node.right);
  if (rightDeep === -1) return -1;

  // 左右子树最大深度的绝对值 如果大于 1  返回-1 否则返回最大深度 + 1
  return Math.abs(leftDeep - rightDeep) > 1
    ? -1
    : Math.max(leftDeep, rightDeep) + 1;
}
var isBalanced = function (root) {
  return getDepth(root) !== -1;
};
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
function getDepth(node) {
  if (!node) return 0;
  // 获取左子树最大深度
  let leftDeep = getDepth(node.left);
  if (leftDeep === -1) return -1;

  // 获取右子树最大深度
  let rightDeep = getDepth(node.right);
  if (rightDeep === -1) return -1;

  // 左右子树最大深度的绝对值 如果大于 1  返回-1 否则返回最大深度 + 1
  return Math.abs(leftDeep - rightDeep) > 1
    ? -1
    : Math.max(leftDeep, rightDeep) + 1;
}
var isBalanced = function (root) {
  return getDepth(root) !== -1;
};