429. N-ary Tree Level Order Traversal

429. N-ary Tree Level Order Traversal

题目

429. N-ary Tree Level Order Traversal

我的代码(递归实现)

"""
# Definition for a Node.
class Node:
    def __init__(self, val, children):
        self.val = val
        self.children = children
"""
class Solution:
    def levelOrder(self, root: 'Node') -> List[List[int]]:
        li=[]
        def level_traverse(T,depth):
            nonlocal li
            if T:
                if len(li)>depth:
                    li[depth].append(T.val)
                else:
                    li.append([T.val])
                for n in T.children:
                    level_traverse(n,depth+1)
        level_traverse(root,0)
        return li

优秀代码

class Solution:
    def levelOrder(self, root: 'Node') -> 'List[List[int]]':
        ans = []
        base = [root]
        while base:
            nb = []
            cur = []
            for i in base:
                if i:
                    cur.append(i.val)
                    nb+ = i.children
            if cur:
                ans.append(cur)
            base = nb
        return ans

ans:结果。base:本层的结点列表。nb:下一层的结点列表。cur:本层取得得值。