작심삼일

[LeetCode] 102 | Binary Tree Level Order Traversal | Python 본문

스터디/코테

[LeetCode] 102 | Binary Tree Level Order Traversal | Python

yun_s 2022. 7. 13. 10:08
728x90
반응형

문제 링크: https://leetcode.com/problems/binary-tree-level-order-traversal/


문제

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).


조건

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

내 풀이

ans를 2d 리스트를 만든다.

ans[depth]에는 해당 depth의 노드가 들어갈 것이다.

recursive하게 돌면서 ans[depth]에 depth를 추가한다.

이때, len(ans) > depth를 만족하지 않는다면 그 depth에 해당하는 노드 중 처음 노드가 들어간다는 뜻이 되므로 (아래 그림에서는 15에 해당) ans에 append 해준다.


코드

# 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 []
        ans = [[]]
        
        def traversal(root, depth):
            if not root:
                return
            
            if len(ans) > depth:
                ans[depth].append(root.val)
            else:
                ans.append([root.val])
            
            traversal(root.left, depth+1)
            traversal(root.right, depth+1)
            
        traversal(root, 0)
        
        return ans
728x90
반응형
Comments