# 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 check(node):
            if not node:
                return 0
            
            left = check(node.left)
            right = check(node.right)
            
            if left == -1 \
                or right == -1 \
                or abs(left-right) > 1:
                return -1
            
            return max(left, right) + 1
    
        return check(root) != -1

 

체크포인트

  • leaf 노드 탐색을 if not node (None인지 체크)로 수행
  • leaf 노드 도달 시 탐색를 종료하는 동시에 상태값을 0으로 저장
  • 현 노드 상태값은 max(left, right) + 1로 저장

+ Recent posts