110. Balanced Binary Tree ⭐

Easy

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as:

a binary tree in which the left and right subtrees of every node differ in height by no more than 1.

Example 1:

Input: root = [3,9,20,null,null,15,7]
Output:
 true

Example 2:

Input: root = [1,2,2,3,3,null,null,4,4]
Output:
 false

Example 3:

Input: root = []
Output:
 true

Constraints:

  • The number of nodes in the tree is in the range [0, 5000].

  • -104 <= Node.val <= 104

解題

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func isBalanced(root *TreeNode) bool {
    if root == nil { return true }
    left := helper(root.Left)
    right := helper(root.Right)
    
    return abs(left-right) <= 1 && isBalanced(root.Left) && isBalanced(root.Right)
}

func helper(root *TreeNode) int {
    if root == nil { return 0 }
    return max(helper(root.Left), helper(root.Right)) + 1
}

func max(a, b int) int {
    if a > b { return a }
    return b
}

func abs(n int) int {
    if n < 0 { return -n }
    return n
}

Last updated