Leetcode 110.平衡二叉树

5 阅读1分钟

题目

image.png

26年5月23日(首刷看解)

func isBalanced(root *TreeNode) bool {
    result:=getheight(root)
    if result==-1{
        return false
    }
        return true
}
func getheight(root *TreeNode) int{
if root==nil{
    return 0
}
l:=getheight(root.Left)
r:=getheight(root.Right)
if l==-1||r==-1{
    return -1
}
if abs(l-r)>1{
    return -1
}
return max(l+r)+1
}
func abs(a int) int{
    if(a>0){
        return a
    }else{
        return -a
    }
}

思路

递归三部曲

1.确定投进去的参数和想要的结果。(大老板给资金,指定要求结果)

这里getheight 是给一个根节点,要求得到这个根节点的高度

2.确定终止条件(最蠢的员工来说:老板如果根节点为0怎么办)

3.确定单次的逻辑(外包交给最聪明的员工)

复杂任务直接调用递归

比如这里要确定一个节点的高度,就是算左右子树大的那个高度,再加根节点本身,最后返回

那么这里算左右子树的高度,外包交给聪明员工

l:=getheight(root.Left)

r:=getheight(root.Right)

还有一些判断逻辑,就要自己想。