0
点赞
收藏
分享

微信扫一扫

【leetcode】110.平衡二叉树

alanwhy 2022-04-26 阅读 46

【leetcode】110.平衡二叉树


在这里插入图片描述

题目

leetcode原题链接

思路

我们可以定义一个求高度的递归函数,当以传入节点为根节点的二叉树是平衡二叉树则返回它的高度,如果不是平衡二叉树则返回-1来表示整棵树已经不是平衡二叉树了。

  • 递归函数参数为树的节点,返回值为树的高度或-1
  • 递归函数的结束条件是当传入节点为空节点则返回0,表示高度为0
  • 单层递归逻辑就是求出左子树的高度和右子树的高度,判断两个高度的差,如果小于等于1,就返回高度值为 1 + Math.max(leftHeight , rightHeight),否则返回-1。

代码

在这里插入图片描述

var isBalanced = function(root) {
    function getHeight(node){
        if(!node) return 0
        const leftHeight = getHeight(node.left)
        if(leftHeight === -1) return -1
        const rightHeight = getHeight(node.right)
        if(rightHeight === -1) return -1

        // 计算高度差
        if(Math.abs(leftHeight - rightHeight) <= 1){
            return 1 + Math.max(leftHeight , rightHeight)
        }else{
            return -1
        }
    }

    return getHeight(root) !== -1
};

关注我的专栏,每天更新三道leetcode题解,一起变强!

举报

相关推荐

0 条评论