题目

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。

例如,给定一个 3叉树:

image.png

返回其层序遍历:

  1. [
  2. [1],
  3. [3, 2, 4],
  4. [5, 6]
  5. ]

说明:

  • 树的深度不会超过 1000。
  • 树的节点总数不会超过 5000。

方案一(广度优先搜索)

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

def levelOrder(self, root: 'Node') -> [[int]]:
    if not root:
        return []

    ret = []
    deque = collections.deque([root])
    while deque:
        count = len(deque) # 每一层的数量
        layer = []
        for _ in range(count):
            node = deque.popleft()
            layer.append(node.val)
            if node.children:
                deque.extend(node.children)
        ret.append(layer)
    return ret

原文

https://leetcode-cn.com/explore/learn/card/n-ary-tree/159/traversal/622/