파이썬 알고리즘 인터뷰 문제 48번(리트코드 110번) Balanced Binary Tree
https://leetcode.com/problems/balanced-binary-tree/
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def isBalanced(self, root: Optional[TreeNode]) -> bool:
if not root:
return True
def depth(root):
if not root:
return 0
return 1 + max(depth(root.left), depth(root.right))
if abs(depth(root.left) - depth(root.right)) > 1:
return False
else:
return self.isBalanced(root.left) and self.isBalanced(root.right)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def isBalanced(self, root: Optional[TreeNode]) -> bool:
def depth(root):
if not root:
return 0
left = depth(root.left)
right = depth(root.right)
if left == -1 or right == -1 or abs(left-right) > 1:
return -1
return max(left, right)+1
return depth(root) != -1