DFS | Divide and Conquer
class Solution:
def isBalanced(self, root: TreeNode) -> bool:
balance, height = self.helper(root)
return balance
def helper(self, root):
if not root: return (True, 0)
leftB, leftH = self.helper(root.left)
rightB, rightH = self.helper(root.right)
return (leftB and rightB and abs(leftH-rightH) <= 1, max(leftH, rightH)+1)