08_N叉树的层序遍历

简介: 08_N叉树的层序遍历

N叉树的层序遍历

给定一个 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] 之间
/*
// Definition for a Node.
class Node {
    public int val;
    public List<Node> children;
    public Node() {}
    public Node(int _val) {
        val = _val;
    }
    public Node(int _val, List<Node> _children) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {
    public List<List<Integer>> levelOrder(Node root) {
        // 返回最终的结果列表
        List<List<Integer>> resList = new ArrayList<>();
        Queue<Node> que = new LinkedList<>();
        que.add(root);
        if (root == null) return resList;
        while (!que.isEmpty()) {
            // 统计队列中当前层所拥有的元素个数
            int levelSize = que.size();
            List<Integer> levelList = new ArrayList<>();
            for (int i = 0; i < levelSize; i++) {
                Node tmp = que.poll();
                levelList.add(tmp.val);
                List<Node> children = tmp.children;
                // 当前孩子结点为null或者长度为0,直接continue
                if (children == null || children.size() == 0) {
                    continue;
                }
                // 遍历当前节点的孩子节点,将其添加到队列中
                for (Node child: children) {
                    que.add(child);
                }
            }
            resList.add(levelList);
        }
        return resList;
    }
}
相关文章
|
存储 消息中间件 监控
阿里云sls日志服务简介和使用流程
阿里云SLS(Simple Log Service)是一种高度可扩展的、低成本的日志托管服务,它提供了全面的日志采集、存储、分析和呈现功能。阿里云SLS是全球首个在公共云上提供日志服务的企业,它具有高可靠性、高稳定性和高安全性等特点,可满足不同企业的日志需求。
|
6月前
|
存储 安全 API
如何下载旧版本的 Postman?
旧版本的 Postman 可能有助于更好地兼容不同的框架。 了解如何找到 Postman 的确切版本,以便优化你的 API 开发!
如何下载旧版本的 Postman?
|
12月前
|
开发工具 Android开发 git
鸿蒙Flutter实战:01-搭建开发环境
本文介绍了如何搭建鸿蒙 Flutter 开发环境,包括安装 DevEco Studio 等工具,并详细说明了 Mac 和 Windows 系统下的环境变量配置。此外,还介绍了如何使用 FVM 管理多个 Flutter 版本,并提供了一些常见问题的解决方案和交流群信息。
394 0
鸿蒙Flutter实战:01-搭建开发环境
|
监控 数据可视化 测试技术
性能测试:性能测试报告
**性能测试报告摘要** 报告详述系统在不同负载下的性能,作为决策、问题发现与解决、沟通合作及监控改进的依据。内容涵盖测试目的、环境、策略、用例、结果、分析、问题、调优建议及风险评估。清晰的图表辅助理解,为开发团队提供优化指导,确保系统性能与用户体验的提升。
|
11月前
|
算法 Python
SciPy 教程 之 SciPy 图结构 4
SciPy 图结构教程,介绍图的基本概念及在 SciPy 中的实现。图由节点和边组成,用于表示对象及其关系。scipy.sparse.csgraph 模块提供了图结构的处理方法,如使用 floyd_warshall() 计算所有节点间最短路径。示例代码展示了如何使用该方法计算并输出结果。
74 1
|
开发工具 Android开发 Swift
探索安卓与iOS开发的差异:从新手到专家的旅程
在数字时代的浪潮中,移动应用开发已成为连接世界的桥梁。本文将深入探讨安卓与iOS这两大主流平台的开发差异,带领读者从零基础出发,逐步了解各自的特点、开发环境、编程语言及市场策略。无论你是梦想成为移动应用开发者的初学者,还是希望扩展技能边界的资深开发者,这篇文章都将为你提供宝贵的见解和实用的建议。
|
弹性计算 运维 安全
云服务器 ECS产品使用问题之是否可以搭建ERP平台
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
Java 数据库连接 数据库
Java语言中的数据库技术深度解析
Java语言中的数据库技术深度解析
422 0
|
SQL 消息中间件 JavaScript
权限系统中的数据权限就该这么设计,yyds!
权限系统中的数据权限就该这么设计,yyds!