平衡二叉树

一句话说明

先算高度,再顺手判断是否失衡;一旦失衡就直接向上返回 -1。

Go 代码

func isBalanced(root *TreeNode) bool {
    return height(root) != -1
}
 
func height(node *TreeNode) int {
    if node == nil {
        return 0
    }
 
    left := height(node.Left)
    if left == -1 {
        return -1
    }
 
    right := height(node.Right)
    if right == -1 {
        return -1
    }
 
    if left-right > 1 || right-left > 1 {
        return -1
    }
    if left > right {
        return left + 1
    }
    return right + 1
}

关键点

这题的核心不是“算出高度”,而是“把不平衡的信息一路传上去”。

相关主题


返回:树算法 | 算法学习导航