平衡二叉树
一句话说明
先算高度,再顺手判断是否失衡;一旦失衡就直接向上返回
-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
}关键点
这题的核心不是“算出高度”,而是“把不平衡的信息一路传上去”。