1. 问题描述:
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。
示例 1:
输入:root = [1,null,3,2,4,null,5,6]
输出:[[1],[3,2,4],[5,6]]
示例 2:
输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
输出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]
提示:
树的高度不会超过 1000
树的节点总数在 [0, 10^4] 之间
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal
2. 思路分析:
分析题目可以知道层次遍历使用宽搜即可解决,每一次遍历每一层的所有节点加入到结果中即可,属于模板题。
3. 代码如下:
from typing import List
import collections
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]]:
if not root: return []
queue = collections.deque([root])
res = list()
while queue:
lev = list()
for i in range(len(queue)):
node = queue.popleft()
lev.append(node.val)
# extend方法可以往列表末尾添加多个元素
queue.extend(node.children)
res.append(lev)
return res