每日刷题 day09 ---平衡二叉树

110 阅读1分钟

leetcode传送门

image.png

思路: 平衡二叉树是保证所有节点的左右子树的高度差<1

那么 对于一个节点node,当他为空的时候,h = 0

当他不为空的时候,他的高度h = max(h(node.左子树),h(node.右子树)), 左右子树高度的求法和当前节点node的高度求法一样,于是很容易想到递归,递归的终止条件就是 节点为 空,高度为0

/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isBalanced = function(root) {
    return deep(root) !== -1
    
    function deep(root){
        if(root == null){
            return 0
        }

        let left = deep(root.left)
        if(left === -1){
            reutrn -1
        }
        let right = deep(root.right)
        if(right === -1 ){
            return -1
        }

        return Math.abs(left - right) > 1 ? -1 : Math.max(left,right) + 1
    }
};