⭐北邮复试刷题429. N 叉树的层序遍历(按层入队出队BFS)(力扣每日一题)

429. 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] 之间

在这里插入图片描述

题解:

主要思路就是常规BFS,只不过每次从队列拿元素的时候一次将一层的节点全部拿出,再将这些节点下层的children都同时入队即可。这样会造成最后多一次入队出队,所以最后加上一次判空操作即可;

代码:

/*
// 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) {Queue<Node> queue = new LinkedList<>();List<List<Integer>> res = new ArrayList<>();if(root == null){return res;}queue.offer(root);List<Integer> list = new ArrayList<>();list.add(root.val);res.add(list);while(!queue.isEmpty()){// 队列想边拿边加时,则利用长度字段;想只拿不加可以用队列判空,最后队列再加;List<List<Node>> tmpList = new ArrayList<>();while(!queue.isEmpty()){// 出队// 将同层的节点一次拿出Node tmpQueueOne = queue.poll();if(tmpQueueOne.children != null)tmpList.add(tmpQueueOne.children);}if(tmpList == null || tmpList.size() == 0)continue;int tmpLen = tmpList.size();List<Integer> tmpResOfOne = new ArrayList<>();for(int i=0;i<tmpLen;i++){if(tmpList.get(i) != null){for(int j=0;j<tmpList.get(i).size();j++){tmpResOfOne.add(tmpList.get(i).get(j).val);// 入队// 将本层下层的孩子全部同时入队queue.offer(tmpList.get(i).get(j));}}}if(tmpResOfOne == null || tmpResOfOne.size() == 0)continue;res.add(tmpResOfOne);}return res;}
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

票房25亿!《热辣滚烫》的创造性模仿,普通人赚钱的落地方法

最近很火的电影《热辣滚烫》包含了我们很多普通人做点小事儿&#xff0c;赚点小钱非常落地的方法&#xff0c;叫做创造性模仿。 很多人说《热辣滚烫》是翻拍的日本《百元之恋》&#xff0c;知道这个有什么用&#xff1f;就证明贾玲不是那么优秀吗&#xff1f;对我们普通人想赚…

人工智能技术应用笔记(二):OpenAI SORA文生视频模型技术报告全文中英对照 (GPT4翻译+人工润色)

目录 Video generation models as world simulators&#xff08;视频生成模型作为世界模拟器&#xff09; Turning visual data into patches &#xff08;将视觉数据转换为图像块&#xff09; Video compression network &#xff08;视频压缩网络&#xff09; Spacetim…

刷题Day1

&#x1f308;个人主页&#xff1a;小田爱学编程 &#x1f525; 系列专栏&#xff1a;刷题日记 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于IT的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到小田代码世界~ &#x1f601; 喜欢…

npm run serve启动报错npm ERR! Missing script: “serve“

启动项目的时候用npm run serve发现报了以下的错误 解决方法&#xff1a; 1.一般情况下&#xff0c;这个问题是因为package.json文件里面确实没有 这里没有可能因为你的脚手架版本比较低&#xff0c;如果不想换&#xff0c;可以用 这里面有的 npm run dev去启动也是可以的 n…

【大厂AI课学习笔记】【2.2机器学习开发任务实例】(2)房屋价格预测模型搭建

下面学习一个具体的实例&#xff0c;关于中介根据历史房屋价格&#xff0c;进行房价评估和预测的方法。 大家都知道&#xff0c;中介要给房东和客户报价&#xff0c;一般人是比较有经验的&#xff0c;资深的经纪人&#xff0c;往往会报出更符合市场的价格&#xff0c;再进行一…

RK3399平台开发系列讲解(USB篇)USB发展背景

🚀返回专栏总目录 文章目录 一、发展变化二、通讯接口三、信号传输状态四、四种传输沉淀、分享、成长,让自己和他人都能有所收获!😄 📢介绍USB发展背景。 一、发展变化 USB1.1:规范了USB低全速传输; USB2.0:规范了USB高速传输,采用NRZI(反向不归零)编码(NRZI采…

【电路笔记】-LR串联电路

LR串联电路 文章目录 LR串联电路1、概述2、示例1所有线圈、电感器、扼流圈和变压器都会在其周围产生磁场,由电感与电阻串联组成,形成 LR 串联电路。 1、概述 在本节有关电感器的第一个文章中,我们简要介绍了电感器的时间常数,指出流过电感器的电流不会瞬时变化,而是会以恒…

07 按键控制 LED

按键简介 按键开关是一种电子开关&#xff0c;属于电子元器件类。常见的按键开关有两种&#xff0c;第一种是轻触式按键开关&#xff08;简称轻触开关&#xff09;&#xff0c;使用时以向开关的操作方向施加压力使内部电路闭合接通&#xff0c;当撤销压力时开关断开&#xff0…

OpenHarmony—UIAbility组件基本用法

UIAbility组件的基本用法包括&#xff1a;指定UIAbility的启动页面以及获取UIAbility的上下文UIAbilityContext。 指定UIAbility的启动页面 应用中的UIAbility在启动过程中&#xff0c;需要指定启动页面&#xff0c;否则应用启动后会因为没有默认加载页面而导致白屏。可以在U…

【JavaEE】IP协议

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

方法递归调用

一、递归调用的基本介绍 二、递归调用机制 三、递归重要规则

【STM32 CubeMX】SPI HAL库编程

文章目录 前言一、CubeMX配置SPI Flash二、SPI HAL编程2.1 查询方式函数2.2 使用中断方式2.3 DMA方式 总结 前言 STM32 CubeMX 是一款由 STMicroelectronics 提供的图形化配置工具&#xff0c;用于生成 STM32 微控制器的初始化代码和项目框架。在 STM32 开发中&#xff0c;使用…