Java——N叉树的层序遍历

news2024/11/17 23:35:55

题目链接

leetcode在线oj题——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] 之间

解题思路

首先判断树的根节点是不是空,如果是空则直接返回空

然后建立一个队列,先将根节点放进去
在这里插入图片描述
然后确定当前队列大小size,此时只有一个元素,将队列的前size个元素(根节点)的所有孩子节点都放进队列,将队列的前size个元素取出来并打印
在这里插入图片描述
重复上面的过程,将队列的前size个元素(3节点,2节点,4节点)的孩子节点都放入队列,将队列的前size个元素取出来并打印
在这里插入图片描述

一直重复上面的过程,将队列的前size个元素的所有孩子放进队列,然后将队列的前size个元素取出并打印出来,直到最后队列为空,即可得到最终的结果

代码

/*
// 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>> result = new ArrayList<>();
        if(root == null){
            return result;
        }
        
        Queue<Node> queue = new LinkedList<>();
        queue.offer(root);
        
        while(!queue.isEmpty()){
            List<Integer> rowList = new ArrayList<>();
            int size = queue.size();
            
            while(size != 0){
                Node cur = queue.poll();
                //保存当前元素val
                rowList.add(cur.val);
                //添加孩子节点
                for (int i = 0; i < cur.children.size(); i++) {
                    queue.offer(cur.children.get(i));
                }
                size--;
            }
            result.add(rowList);
        }
        return result;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/390322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络基础(三)

目录 网络层与数据链路层 ​编辑 网络层 IP协议 IP的构成 TCP和IP各自解决什么问题&#xff1f; 基本概念 协议头格式 协议头分析 如何分离与封装&#xff1f; 如何分用(向上交付)&#xff1f; 16位首部校验和 32位源IP和目的IP 4位版本 8位服务类型(Type Of…

【计算机】单位制前缀的歧义-KB、kb、MB混用

引言 经常遇到容量、带宽的单位&#xff0c;MB&#xff0c;GB在进行单位换算时&#xff0c;总是傻傻分不清&#xff0c;查些资料浅记录一下。 公制&#xff08;metric system&#xff09; 又译米制&#xff0c;是一个国际化十进位量度系统。法国在1799年开始使用公制&#xf…

【微信小程序】-- 页面导航 -- 声明式导航(二十二)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

maven生命周期、阶段与默认绑定插件梳理

maven生命周期、阶段与默认绑定插件梳理 CSDN博客 码云源码 1.maven生命周期、阶段与默认绑定插件 序号生命周期lifecycle阶段phase默认绑定插件(链接官网)默认绑定插件(链接maven库)说明1cleancleanmaven-clean-pluginmaven-clean-plugin清理2.1buildvalidate——验证2.2b…

Unity记录1.1-入门-下载与创建项目

文章首发及后续更新&#xff1a;https://mwhls.top/4439.html&#xff0c;无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评&#xff0c;非常感谢&#xff01; 汇总&#xff1a;Unity 记录 写的很简略&#xff0c;因为不…

【数据挖掘与商务智能决策】第一章 数据分析与三重工具

numpy基础 numpy与数组 import numpy as np # 用np代替numpy,让代码更简洁 a [1, 2, 3, 4] # 创建列表a b np.array([1, 2, 3, 4]) #从列表ach print(a) print(b) print(type(a)) #打印a类型 print(type(b)) #打印b类型[1, 2, 3, 4] [1 2 3 4] <class ‘list’>…

目标检测: 数据增强代码详解

1. 常见的数据增强 1.1 翻转图像 左右水平翻转 假设图片的宽高为w,h,bdbox左上角A坐标为(x1,y1), 右下角B为(x2,y2)。经过左右水平翻转后,bdbox的左上角A1坐标(w-x2,y1) ,右下角B1坐标为(w-x1,y2)左右水平翻转的代码实现如下:from PIL import Image image = Image.open(i…

xmu 离散数学 卢杨班作业详解【4-7章】

文章目录第四章 二元关系和函数4.6.2911121618.120.222.1232834第五章 代数系统的一般概念2判断二元运算是否封闭348111214第六章 几个典型的代数系统1.5.6.7.11.12151618第七章 图的基本概念12479111215第四章 二元关系和函数 4. A{1,2,3} 恒等关系 IA{<1,1>,<2,2…

微服务到云原生

微服务到云原生 微服务 微服务架构&#xff08;Microservice Architecture&#xff09;是一种架构概念&#xff0c;旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。 微服务是一种架构风格&#xff0c;一个大型复杂软件应用由一个或多个微服务组成。系统中的各…

为什么Gateway网关引入了LoadBalancer组件就拥有了负载均衡能力?

1、思考&#xff1a;一般而言&#xff0c;当我们在项目中引入了 LoadBalancer 负载均衡启动器组件&#xff0c;那么SpringBoot自动配置的ClassPath类路径加载机制会扫描到 LoadBalancer 类路径下的 spring.factories 配置文件&#xff0c;会注册一些Bean &#xff0c;但为什么网…

Java开发环境搭配

#Java开发环境搭建 oracle官网下载java https://www.oracle.com/cn/ 下载匹配电脑系统的版本 注意&#xff1a;安装路径不要包含中文 #JDK环境变量配置&#xff08;win10&#xff09; path 是一个常见的环境变量&#xff0c;它告诉系统除了在当前目录下寻找此程序外&#…

kafka3.0安装使用

一&#xff1a;定义 Kafka传 统定义&#xff1a;Kafka是一个分布式的基于发布/订阅模式的消息队列&#xff08;Message Queue&#xff09;&#xff0c;主要应用于大数据实时处理领域。 Kafka最 新定义 &#xff1a; Kafka是 一个开源的 分 布式事件流平台 &#xff08;Event St…

安卓反编译入门01-apktool反编译使用流程

apktool反编译使用流程1.获取工具apktool反编译 APK&#xff0c;首先要有工具apktool.jar apktool下载地址&#xff1a;https://bitbucket.org/iBotPeaches/apktool/downloads作者github 地址&#xff1a;https://github.com/iBotPeaches/Apktool无脑下最新版就行了。将下载好的…

计算机网络协议详解(一)

文章目录&#x1f525;计算机网络通信&#x1f525;TCP/IP协议群&#x1f525;TCP协议传输特点&#x1f525;服务端口&#x1f525;数据包与处理流程&#x1f525;计算机网络通信 什么是通信协议 简单来说&#xff0c;通信协议就是计算机之间通过网络实现通信时事先达成的一种…

陀螺仪小车(Forerake-Car)

项目简介&#xff1a;搭建一辆有arduino UNO 与rnf24l01组成的小车&#xff1b;手部安装由arduino nano开发板、nrf24l01、imu构成的手势控制器&#xff0c;利用手势控制器检测手部状态、发送信号对小车进行前进&#xff0c;实现基于卡尔曼滤波的MPU6050姿态结算。 准备工作&am…

蓝桥杯2023/3/2

1. 小蓝正在学习一门神奇的语言&#xff0c;这门语言中的单词都是由小写英文字母组 成&#xff0c;有些单词很长&#xff0c;远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词&#xff0c;他准备不再完全记忆这些单词&#xff0c;而是根据单词中哪个字母出现得最…

格密码学习笔记(一):格的定义、基本区域和行列式

文章目录格的基本定义格的基本区域格的行列式致谢格的基本定义 定义1 给定nnn维实数空间Rn\mathbb{R}^nRn中的一组线性无关向量B{b1,…,bn}⊂Rn\bm{B} \{ \bm{b}_1, \dots, \bm{b}_n \} \subset \mathbb{R}^nB{b1​,…,bn​}⊂Rn&#xff0c;其整数系数线性组合构成的集合被称…

列表(list)、数组(numpy)、张量(tensor)、元组各自怎样查看形状

列表&#xff08;list&#xff09;、数组&#xff08;numpy&#xff09;、张量&#xff08;tensor&#xff09;、元组各自怎样查看形状 一、查看列表&#xff08;list&#xff09;的形状 1.shape import numpy as npL [[1,2],[3,4],[5,6],[7,8]] L np.array(L)print(L.sha…

大数据周会-本周学习内容总结04

目录 1、mysql数据同步到es 1.1、通过logstash同步数据 1.2、canal数据同步 1.3、通过logstash将本地文件导入es 2、git 1、mysql数据同步到es 1.1、通过logstash同步数据 elastic官方文档&#xff1a;如何使用Logstash和JDBC确保 Elasticsearch与关系型数据库保持同步&a…

5. unity之组件

1. 组件Component 物体可以挂载不同的组件以实现不同的功能&#xff0c;需要什么功能就添加什么组件。当我们选中一个物体后&#xff0c;就可以在右侧的属性窗口中添加组件&#xff0c;如下图所示&#xff1a; 2. AudioSource组件 使用这个组件可以为模型添加音乐或者声效效…