# 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
}