Search

Binary Tree Level Order Traversal

문제 설명 : 제공된 이진트리 Root Node를 사용하여, 레벨별 Node 값을 반환
풀이 방법
레벨(depth)별로 값을 별도의 리스트로 구분해야하기 때문에, BFS를 사용하는 것이 적절하다.
queue에 동일 level에 존재하는 node만 pop하도록 설정하여 처리한다.
기존의 bfs 과정에서, 값을 확인하는 과정만 추가하면 된다.
시간복잡도 : O(N)O(N)
성공 코드
# 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 from collections import deque class Solution: def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: if not root: return [] result = [] queue = deque([root]) while queue: # 현 level 정보가 존재하는 요소들만 popleft 후 확인 temp = [] queue_len = len(queue) for i in range(queue_len): node = queue.popleft() temp.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) result.append(temp) return result
Python
복사