물음표 살인마의 개발블로그

알고리즘 문제/Leetcode

102. Binary Tree Level Order Traversal

BEstyle 2023. 1. 22. 01:34

Given the root of a binary tree, return the level order traversal of its nodes' values. (i.e., from left to right, level by level).

 

Example 1:

Input: root = [3,9,20,null,null,15,7]
Output: [[3],[9,20],[15,7]]

Example 2:

Input: root = [1]
Output: [[1]]

Example 3:

Input: root = []
Output: []

 

Constraints:

  • The number of nodes in the tree is in the range [0, 2000].
  • -1000 <= Node.val <= 1000

# https://leetcode.com/problems/binary-tree-level-order-traversal/description/

'''
1. 아이디어 :
    1) bfs로 해당 노드 레벨을 탐색한다.
2. 시간복잡도 :
    1) O(n)
3. 자료구조 :
    1) 이진트리
'''


# 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 []
        ans = [[root.val]]
        deq = deque([root])

        while deq:
            deqlen = len(deq)
            templist = []
            for i in range(deqlen):
                temp = deq.popleft()
                if temp.left:
                    deq.append(temp.left)
                    templist.append(temp.left.val)
                if temp.right:
                    deq.append(temp.right)
                    templist.append(temp.right.val)
            if templist:
                ans.append(templist)
        return ans

'알고리즘 문제 > Leetcode' 카테고리의 다른 글

1448. Count Good Nodes in Binary Tree  (1) 2023.01.22
199. Binary Tree Right Side View  (0) 2023.01.22
235. Lowest Common Ancestor of a Binary Search Tree  (0) 2023.01.22
572. Subtree of Another Tree  (0) 2023.01.21
100. Same Tree  (0) 2023.01.21