이진 트리의 root가 주어지면, 노드 값에 대한 순서 순회 레벨 탐색을 반환합니다(즉, 왼쪽에서 오른쪽으로 탐색합니다).
예시 1
Input
root = [3,9,20,null,null,15,7]
Output
[[3],[9,20],[15,7]]
예시 2
Input
root = [1]
Output
[[1]]
예시 3
Input
root = []
Output
[]
# 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 levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root :
return []
queue = deque([root])
result = []
while queue:
level_len = len(queue)
level_value = []
for i in range(level_len):
node = queue.popleft()
level_value.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
result.append(level_value)
return result
저번에는 한 레벨의 노드 값을 짝수 층에서는 오-왼 순서로 넣어주고,홀수 층일 때는 왼-오 순서로 넣어주는 문제였는데, 이번에는 층에 상관없이 노드 값을 왼-오 순서로 넣은 리스트를 반환하면 되는 문제였다.
따라서,
각 레벨에서의 노드 값을 왼-오 순서로 level_value
리스트에 담아준다.
각 레벨을 탐색한 후에는 result
배열에 level_value
에 담긴 값을 append 해준다.