110 平衡二叉树-简单

题目:

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

分析:

因为每个节点都需要保证平衡,所以采用自底向上的深度优先搜索,

因为需要每个节点都保证是平衡,所以可以采用自底向上的递归。

// date 2023/10/30
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func isBalanced(root *TreeNode) bool {
    res := true
    var dfs func(root *TreeNode, depth int) int
    dfs = func(root *TreeNode, depth int) int {
        if root == nil {
            return depth
        }
        l := dfs(root.Left, depth)
        r := dfs(root.Right, depth)
        if abs(l, r) > 1 {
            res = false
        }
        if l > r {
            return l+1
        }
        return r+1
    }

    dfs(root, 0)

    return res
}

func abs(x, y int) int{
    if x > y {
        return x-y
    }
    return y-x
}

最后更新于