【剑指offer】 平衡二叉树

  |   0 评论   |   0 浏览

题目

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树*每个节点 * 的左右两个子树的高度差的绝对值不超过 1 。

我的答案

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isBalanced = function (root) {
    const res = getDepth(root);
    if (res !== false) {
        return true;
    } else {
        return false;
    }
};

var getDepth = function (root) {
    if (!root) {
        return 0;
    }
    if (!root.left && !root.right) {
        return 1;
    }
    const leftDepth = getDepth(root.left);
    const rightDepth = getDepth(root.right);
    if (leftDepth === false || rightDepth === false) {
        return false;
    } else if ((leftDepth - rightDepth) > 1 || (leftDepth - rightDepth) < -1) {
        return false;
    } else {
        return Math.max(leftDepth, rightDepth) + 1;
    }

}

这道题就是一个递归的做法。但是这个递归函数的返回结果有两种,一种false代表子树已经不满足条件可以直接返回false,还有一种结果是返回该节点为根的平衡树的高度。


标题:【剑指offer】 平衡二叉树
作者:limanting
地址:https://blog.manxiaozhi.com/articles/2021/09/25/1632556598129.html