動機
多回傳值的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]