# 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:
# 높이 균형 이진 트리는 각 노드의 두 서브 트리의 깊이가 1 이상 차이가 나지 않는 이진 트리입니다.
# height-balanced tree: 높이 균형 이진 트리는, 각 노드의 두 서브트리의 높이가 1이상 차이가 나지 않음
if not root:
return True
res = []
def dfs(node):
if not node:
return 0
left = dfs(node.left)
right = dfs(node.right)
diff = left - right
if abs(diff) > 1:
res.append(False)
return max(left, right) + 1 # 현재 노드 포함: +1
dfs(root)
return False if False in res else True # 하나라도 False 가 있으면 False
'LeetCode > 주제별 보충' 카테고리의 다른 글
Tree: 235. Lowest Common Ancestor of a Binary Search Tree (0) | 2025.01.16 |
---|---|
Tree: 572. Subtree of Another Tree (0) | 2025.01.16 |
Tree: 543. Diameter of Binary Tree ★ (0) | 2025.01.16 |
BST Sets and Maps ★★ (0) | 2025.01.16 |
BFS: 116. Populating Next Right Pointers in Each Node (0) | 2025.01.16 |