【leetcode】429. N 叉树的层序遍历

news2025/9/20 10:48:22

题目描述

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

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。

示例 1:

|left|200

输入: 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] 之间

代码

bfs

class Solution {  
    public List<List<Integer>> levelOrder(Node root) {  
        Queue<Node> queue = new LinkedList<>();  
        ArrayList<List<Integer>> lists = new ArrayList<>();  
        if (root == null) return lists;  
        lists.add(new ArrayList<Integer>(){{add(root.val);}});  
        for (Node child : root.children) {  
            queue.add(child);  
        }  
        while (!queue.isEmpty()) {  
            int len = queue.size();  
            ArrayList<Integer> temp = new ArrayList<>();  
            for (int i = 0; i < len; i++) {  
                Node poll = queue.poll();  
                temp.add(poll.val);  
                for (Node child : poll.children) {  
                    queue.add(child);  
                }  
            }  
            lists.add(temp);  
        }  
        return lists;  
    }  
}

dfs

class Solution {  
    List<List<Integer>> ans = new ArrayList<>();  
    public List<List<Integer>> levelOrder(Node root) {  
        dfs(root, 1);  
        return ans;  
    }  
    private void dfs(Node node, int deep) {  
        if (node == null) return;  
        if (ans.size() < deep) {  
            ans.add(new ArrayList<>());  
        }  
        ans.get(deep - 1).add(node.val);  
        for (Node child : node.children) {  
            dfs(child, deep + 1);  
        }  
    }  
}

题解

bfs

借助队列来完成bfs操作
先按顺序遍历一层的所有节点, 并把他们的所有子节点按顺序放入队列中
如此一轮遍历后, 队列就被存满了下一层的的节点存满了
如法炮制的多次循环把直到队列为空就得到答案了

dfs

用函数传递的参数表示当前栈的深度(从1开始)
应为深度也可以对应List下标, 所以很容易对对当前栈代表节点的值进行存储


具体代码参上

好的!本次分享到这就结束了
如果对铁汁你有帮助的话,记得点赞👍+收藏⭐️+关注➕
我在这先行拜谢了:)

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

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

相关文章

BUUCTF-Misc6

数据包中的线索1 1.打开附件 发现是一个流量包 2.Wireshark 用Wireshark打开 右键属性&#xff0c;追踪tcp流&#xff0c;发现base64编码 3.base64转图片 将base64编码保存为文本文档 Python脚本 import os,base64 with open("/root/桌面/3/1.txt","r"…

基于SpringBoot+MYSQL的网上订餐系统

目录 1、 前言介绍 2、主要技术 3、系统功能分析 3.1、用户功能分析 3.2、管理员功能分析 4、系统结构分析 4.1、逻辑结构 4.2、物理结构 5、数据库设计 5.1、数据库E-R图设计 5.2、数据库表设计 6、运行截图(部分) 6.1、用户功能模块的实现 6.2、管理员功能模块的…

项目管理【引论一】项目管理的目标和高层次目标

系列文章目录 【引论一】项目管理的目标和高层次目标 一、项目管理的目标 项目管理的目标是在规定的时间内&#xff0c;在批准的预算内&#xff0c;完成事先确定的工作范围内的工作&#xff0c;并且达到预期的质量性能要求。 1.时间、成本和质量之间的关系 1.1时间、成本和…

YOLOv8.1.0安装

【YOLO】YOLOv8训练环境配置 python 3.8.18 cuda 11.3.1 cudnn 8.2.1 pytorch 1.12.1-gpu版 - 知乎 (zhihu.com) 一、Anaconda 默认装好了可用的Anaconda&#xff0c;安装教程见Win10系统anaconda安装 - 知乎 (zhihu.com) 二、在虚拟环境下用conda安装 1.创建虚拟环境 …

transformer--使用transformer构建语言模型

什么是语言模型? 以一个符合语言规律的序列为输入&#xff0c;模型将利用序列间关系等特征&#xff0c;输出一个在所有词汇上的概率分布.这样的模型称为语言模型. # 语言模型的训练语料一般来自于文章&#xff0c;对应的源文本和目标文本形如: src1"Ican do",tgt1…

Python快速入门系列-2(Python的安装与环境设置)

第二章&#xff1a;Python的安装与环境设置 2.1 Python的下载与安装2.1.1 访问Python官网2.1.2 安装Python对于Windows用户对于macOS用户对于Linux用户 2.2 集成开发环境&#xff08;IDE&#xff09;的选择与设置2.2.1 PyCharm2.2.2 Visual Studio Code2.2.3 Jupyter Notebook2…

连锁门店终端如何高效IT运维?向日葵助力服装行业数字化升级

服装行业作为典型的传统行业&#xff0c;因供应逐渐饱和、产能相对过剩以及消费结构升级&#xff0c;其销售端的数字化转型需求是最为迫切的。 为此&#xff0c;某知名时装品牌紧抓数字化转型机遇&#xff0c;在2016年起就开始了数字化变革&#xff0c;并在两年多的时间里完成…

关于Spring依赖注入简洁方式的探索

最近在项目开发过程中关注到一个依赖注入的写法差异&#xff0c;因为本人代码上有点强迫症&#xff0c;看到这种不同人不一样的写法&#xff0c;特意了解了一下&#xff0c;但是依然有部分疑惑未解。 两种写法&#xff1a;(就是传说中最常见的属性注入和构造函数注入) Service…

菜鸟笔记-14Python绘图颜色使用

Python中绘图主要依赖于各种库&#xff0c;其中matplotlib是最常用且功能强大的一个。在matplotlib中&#xff0c;你可以使用各种颜色来表示不同的数据点、线条或填充区域。下面我将详细介绍如何在Python中使用matplotlib来设置绘图颜色&#xff0c;并给出具体的例子。 14.1颜…

DFS回溯-经典全排列问题(力扣)

前言 对于全排列问题&#xff0c;常用的做法是设置一个vis数组来确定位置i上的数字是否被访问&#xff0c;因为是全排列问题&#xff0c;所以不同的顺序也是不一样的排列&#xff0c;因此每次都是从起点开始询问**(注意起点到底是0还是1)** 46全排列(最简单的模板) class So…

训练验证码之ddddocr一个图文视频教学

目录 一、推荐文章视频一、ddddocr环境配置二、字符集验证码训练三、ocr_api_server服务搭建 一、推荐文章视频 文章原文来自这里&#xff1a;训练验证码-4、ddddocr训练字符验证码 &#xff0c; 原文文章末尾有视频介绍更多内容见训练验证码合集 一、ddddocr环境配置 1.打开…

【C++专栏】C++入门 | 函数重载、引用、内联函数

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;C专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ C入门 | 函数重载、引用、内联函数 文章编号&#xff1a;C入门 / 02 文…

Java:继承

文章目录 每日一言什么是继承&#xff1f;子类怎么访问父类的成员变量&#xff1f;不同名的怎么访问&#xff1f;同名的怎么访问&#xff1f; 子类怎么访问父类的成员方法&#xff1f;不同名的怎么访问&#xff1f;同名的怎么访问&#xff1f; 如果我就是想访问同名的父类的成员…

每日一题leetcode第2834:找出美丽数组的最小和

目录 一.题目描述 二.思路及优化 三.C代码 一.题目描述 二.思路及优化 首先我们看到这个题&#xff0c;就是根据给出的数组元素个数N&#xff0c;从[1&#xff0c;N]找出N个元素&#xff0c;使得N个元素的和最小&#xff0c;其中随便抽两个数出来&#xff0c;两个数之和不能为…

《2024国家自然科学基金青年基金》 相关申请注意事项解读

一 年龄计算 2004 对应 89 2005 对应 90 2006 对应 91 2007 对应 92 2008 对应 93 2009 对应 94 2010 对应 95 .。。 二 资助比例&#xff08;2023&#xff09; 2024年 23.13% 2023年 24% 三 2024年政策变动&#xff0c;只能申请3年的30万&#xff0c;不能像23年一样选择10-20的…

UE5.1_使用技巧(常更)

UE5.1_使用技巧&#xff08;常更&#xff09; 1. 清除所有断点 运行时忘记蓝图中的断点可能会出现运行错误的可能&#xff0c;务必运行是排除一切断点&#xff0c;逐个排查也是办法&#xff0c;但是在事件函数多的情况下会很复杂且慢节奏&#xff0c;学会一次性清除所有很有必…

【Python+Selenium学习系列5】Selenium特殊元素定位之-鼠标悬停操作

前言 Selenium模拟用户在浏览器中的操作&#xff0c;比如点击按钮。在某些场景下&#xff0c;我们需要模拟鼠标悬停的操作&#xff0c;来触发一些隐藏的元素。本文将介绍Python Selenium实现鼠标悬停操作。 鼠标悬停&#xff0c;即当光标与其名称表示的元素重叠时触发的事件&…

【js刷题:数据结构数组篇之二分查找】

二分查找 一、什么是二分查找法二、具体实现步骤1.确定确定target所在数组的**左右边界**左闭右闭左闭右开 2.取中间值左闭右闭左闭右开 3.中间元素目标值4.中间元素大于目标值5.中间元素小于目标值6.重复 三、使用条件四、js版本示例1.左闭右闭2.左闭右开 五、力扣刷题1.搜索插…

魔众智能AI系统v2.1.0版本支持主流大模型(讯飞星火、文心一言、通义千问、腾讯混元、Azure、MiniMax、Gemini)

支持主流大模型&#xff08;讯飞星火、文心一言、通义千问、腾讯混元、Azure、MiniMax、Gemini&#xff09; [新功能] 系统全局消息提示 UI 全新优化 [新功能] JS 库增加【ijs】类型字符串&#xff0c;支持默认可执行代码 [新功能] 分类快捷操作工具类 CategoryUtil [新功能…

手写简易操作系统(三)--加载Loader

前情提要 上一节我们讲了如何启动计算机&#xff0c;这一节我们讲如何加载内核&#xff0c;内核是存在于硬盘上的一段程序&#xff0c;要加载这段程序&#xff0c;那么必然需要从硬盘上读取数据&#xff0c;这里我们就需要使用 ATA PIO 模式 根据ATA规范&#xff0c;所有符合A…