動機

多回傳值的dfs

Problem

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

Sol

def dfs(r): # [t/f, height]
    if not r: #or (not r.left and not r.right):
        return [True, 0]
    else:
        a = dfs(r.left)
        b = dfs(r.right)
        return [a[0] and b[0] and (abs(a[1]-b[1]) <= 1), max(a[1],b[1])+1]
class Solution:
    def isBalanced(self, root: TreeNode) -> bool:
        return dfs(root)[0]