[LeetCode] Medium | Binary Tree Level Order Traversal Python

콩이·2024년 11월 19일
0

코딩테스트 Python

목록 보기
11/13

📍 문제 설명

이진 트리의 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

      []

📍 풀이 point

🔓 Try1 🔓

# 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

저번에는 한 레벨의 노드 값을 짝수 층에서는 오-왼 순서로 넣어주고,홀수 층일 때는 왼-오 순서로 넣어주는 문제였는데, 이번에는 층에 상관없이 노드 값을 왼-오 순서로 넣은 리스트를 반환하면 되는 문제였다.

따라서,

  1. 각 레벨에서의 노드 값을 왼-오 순서로 level_value 리스트에 담아준다.

  2. 각 레벨을 탐색한 후에는 result 배열에 level_value에 담긴 값을 append 해준다.

0개의 댓글