429 N 叉树的层序遍历(宽搜)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值