Min IT's Devlog

[python3] 429. N-ary Tree Level Order Traversal 본문

코테/LeetCode(Solve)

[python3] 429. N-ary Tree Level Order Traversal

egovici 2022. 9. 5. 17:28

풀이 일자: 22.09.05

난이도: [Medium]

분류: [BFS/ Tree]

문제 내용

주어진 n-ary tree를 가지고 각 level의 노드값들의 리스트들을 하나로 묶어서 리턴하는 문제이다.

 

문제 해결 흐름

1. 문제에서 level별 순회값을 리턴하라고 어떻게 풀어야 하는지 제시해주었다.

대놓고 BFS쓰라는 거구나. 그래도 일단 익숙한 DFS로 풀어보았다.

"""
# Definition for a Node.
class Node:
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children
"""

class Solution:
    def levelOrder(self, root: 'Node') -> List[List[int]]:
        ans = list()
        
        dq = deque()
        dq.append((root,0))
        
        while dq:
            node, level = dq.popleft()
            if node:
                if len(ans) <= level:
                    ans.append([])
                ans[level].append(node.val)
                for child in node.children:
                    dq.append((child, level + 1))
        
        return ans

 

2. 문제에서 요청한 대로 BFS로 풀어본다면...

 

 

다른 해결 방식

 

문제 링크

https://leetcode.com/problems/n-ary-tree-level-order-traversal/

Comments