•
문제 설명 : 제공된 이진트리 Root Node를 사용하여, 레벨별 Node 값을 반환
•
풀이 방법
◦
레벨(depth)별로 값을 별도의 리스트로 구분해야하기 때문에, BFS를 사용하는 것이 적절하다.
◦
queue에 동일 level에 존재하는 node만 pop하도록 설정하여 처리한다.
▪
기존의 bfs 과정에서, 값을 확인하는 과정만 추가하면 된다.
•
시간복잡도 :
•
성공 코드
# 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
복사