LeetCode--HOT100题(41)
目录
- 题目描述:102. 二叉树的层序遍历(中等)
- 题目接口
- 解题思路
- 代码
- PS:
题目描述:102. 二叉树的层序遍历(中等)
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
LeetCode做题链接:LeetCode-二叉树的层序遍历
示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1]
输出:[[1]]
示例 3:
输入:root = []
输出:[]
提示:
树中节点数目在范围 [0, 2000] 内
-1000 <= Node.val <= 1000
题目接口
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {}
}
解题思路
树的层序遍历可以用BFS,因为层序遍历要求的输入结果和BFS是不同的。层序遍历要求我们区分每一层,也就是返回一个二维数组。而BFS的遍历结果是一个一维数组,无法区分每一层。
思路如下:
1.创建一个空的结果列表res,这个列表用于存储每一层节点的值。
2.创建一个队列queue,并将根节点root加入队列。
3.当队列不为空时,执行以下操作:
- 获取当前队列的长度,即当前层的节点个数。
- 创建一个空的列表level,用于存储当前层的节点值。
- 遍历当前层的所有节点,对于每个节点,执行以下操作:
- 从队列中取出一个节点,并把它的值加入到列表level中。
- 如果这个节点有左子节点,那么将左子节点加入到队列中;如果这个节点有右子节点,那么将右子节点加入到队列中。
- 把列表level加入到结果列表res中。
4.最后返回结果列表res,这个列表中的每个元素都是一个列表,表示树的每一层的所有节点的值。
代码
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {// 创建一个二维列表,用于存储每一层的节点值List<List<Integer>> res = new ArrayList<>();// 创建一个队列,用于层序遍历Queue<TreeNode> queue = new ArrayDeque<>();// 如果根节点不为空,将其加入队列if (root != null) {queue.add(root);}// 当队列不为空时,进行循环while (!queue.isEmpty()) {// 获取当前层的节点个数int n = queue.size();// 创建一个列表,用于存储当前层的节点值List<Integer> level = new ArrayList<>();// 遍历当前层的每个节点for (int i = 0; i < n; i++) {// 取出队首节点TreeNode node = queue.poll();// 将节点值加入当前层的列表level.add(node.val);// 如果当前节点的左子节点不为空,将其加入队列if (node.left != null) {queue.add(node.left);}// 如果当前节点的右子节点不为空,将其加入队列if (node.right != null) {queue.add(node.right);}}// 将当前层的节点值列表加入结果列表res.add(level);}// 返回结果列表return res;}
}
成功!

PS:
感谢您的阅读!如果您觉得本篇文章对您有所帮助,请给予博主一个赞喔~
相关文章:
LeetCode--HOT100题(41)
目录 题目描述:102. 二叉树的层序遍历(中等)题目接口解题思路代码 PS: 题目描述:102. 二叉树的层序遍历(中等) 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地&am…...
微信小程序教学系列(6)
第六章:小程序商业化 第一节:小程序的商业模式 在这一节中,我们将探讨微信小程序的商业模式,让你了解如何将你的小程序变成一个赚钱的机器! 1. 广告收入 小程序的商业模式之一是通过广告收入赚钱。你可以在小程序中…...
小程序中的全局配置以及常用的配置项(window,tabBar)
全局配置文件和常用的配置项 app.json: pages:是一个数组,用于记录当前小程序所有页面的存放路径,可以通过它来创建页面 window:全局设置小程序窗口的外观(导航栏,背景,页面的主体) tabBar:设置小程序底部的 tabBar效果 style:是否…...
数据工厂调研及结果展示
数据工厂 一、背景 在开发自测、测试迭代测试、产品验收的过程中,都需要各种各样的前置数据,大致分为如下几类: 账号(实名、权益等级、注册等) 货源(优货、急走、相似、一手、普通货源等) …...
抓包相关,抓包学习
检查网络流量 - 提琴手经典 (telerik.com) Headers Reference - Fiddler Classic (telerik.com) 以上是fiddler官方文档 F12要勾选保留日志 不勾选的话跳转到新页面之前页面的日志不会在下方显示 会保留所有抓到的包 如果重定向到别的页面 F12抓包可能看不到响应信息,但是…...
云原生之使用Docker部署SSCMS内容管理系统
云原生之使用Docker部署SSCMS内容管理系统 一、SSCMS介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载SSCMS镜像五、部署SSCMS内容管理系统5.1 创建SSCMS容器5.2 检查SSC…...
uniapp -- 在组件中拿到pages.json下pages设置navigationBarTitleText这个值?
1:在 pages.json 文件中设置 navigationBarTitleText,例如: {"pages": [{"path": "pages/home/index","style": {"navigationBarTitleText": "首页",&...
Java获取环境变量和运行时环境信息和自定义配置信息
System.getenv() 获取系统环境变量 public static void main1() {Map<String, String> envMap System.getenv();envMap.entrySet().forEach(x-> System.out.println(x.getKey() "" x.getValue())); } System.getenv() 获取的是操作系统环境变量列表&…...
React入门 组件学习笔记
项目页面以组件形式层层搭起来,组件提高复用性,可维护性 目录 一、函数组件 二、类组件 三、 组件的事件绑定 四、获取事件对象 五、事件绑定传递额外参数 六、组件状态 初始化状态 读取状态 修改状态 七、组件-状态修改counter案例 八、this问…...
Windows商店引入SUSE Linux Enterprise Server和openSUSE Leap
在上个月的Build 2017开发者大会上,微软宣布将SUSE,Ubuntu和Fedora引入Windows 商店,反应出微软对开放源码社区的更多承诺。 该公司去年以铂金会员身份加入Linux基金会。现在,微软针对内测者的Windows商店已经开始提供 部分Linux发…...
[NLP]深入理解 Megatron-LM
一. 导读 NVIDIA Megatron-LM 是一个基于 PyTorch 的分布式训练框架,用来训练基于Transformer的大型语言模型。Megatron-LM 综合应用了数据并行(Data Parallelism),张量并行(Tensor Parallelism)和流水线并…...
软考高级系统架构设计师系列论文七十八:论软件产品线技术
软考高级系统架构设计师系列论文七十八:论软件产品线技术 一、摘要二、正文三、总结一、摘要 本人作为某软件公司负责人之一,通过对位于几个省的国家甲级、乙级、丙级设计院的考查和了解,我决定采用软件产品线方式开发系列《设计院信息管理平台》产品。该产品线开发主要有如…...
yolov5中添加ShuffleAttention注意力机制
ShuffleAttention注意力机制简介 关于ShuffleAttention注意力机制的原理这里不再详细解释.论文参考如下链接here yolov5中添加注意力机制 注意力机制分为接收通道数和不接受通道数两种。这次属于接受通道数注意力机制,这种注意力机制由于有通道数要求,所示我们添加的时候…...
Effective C++条款17——以独立语句将newed 对象置入智能指针(资源管理)
假设我们有个函数用来揭示处理程序的优先权,另一个函数用来在某动态分配所得的widget上进行某些带有优先权的处理: void priority(); void processWidget(std::tr1::shared_ptr<Widget>pw, int priority);由于谨记“以对象管理资源”(条款13&…...
奇迹MU服务器如何选择配置?奇迹MU服务器租用
不同的服务器,根据其特点与性能适用于不同的应用场景,为了让你们更好的理解,我们对服务器进行了分类归纳,结合了服务器不同的特点以及价位进行一个区分,帮助我们更好的选择合适的服务器配置。 VPS服务器 VPS服务器又…...
如何远程管理服务器详解
文章目录 前言一、远程管理类型二、远程桌面三、telnet 命令行远程四、查看本地开放端口 前言 很多公司是有自己的机房的,机房里面会有若干个服务器为员工和用户提供服务。大家可以想想:假设这家公司有上百台服务器,我们作为网络工程师&…...
JavaScript——为什么静态方法不能调用非静态方法
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...
Python实现常见的排序算法
当涉及到排序算法时,一些常见的排序算法包括插入排序、选择排序、冒泡排序、快速排序、归并排序和堆排序。以下是使用Python实现这些常见排序算法的示例代码: 插入排序(Insertion Sort): def insertionSort(arr):for…...
【git】fatal: refusing to merge unrelated histories
在一次重新初始化本地仓库后,拉取远程仓库时提示: fatal: refusing to merge unrelated histories 在“fatal: refusing to merge unrelated histories”(即,不知道彼此的存在,并已不匹配的项目提交历史)…...
在编辑器中使用正则
正则是一种文本处理工具,常见的功能有文本验证、文本提取、文本替换、文本切割等。有一些地方说的正则匹配,其实是包括了校验和提取两个功能。 校验常用于验证整个文本的组成是不是符合规则,比如密码规则校验。提取则是从大段的文本中抽取出…...
会Python可以找什么工作?
Python凭借简洁易用、功能强大的特点,成为当下就业面极广的编程语言。不少人学会后却不清楚可以找什么工作,其实从开发、数据分析到自动化运维都有大量机会,接下来为大家详细讲解一下。会Python后,可以找的工作有很多,…...
内容解锁工具:突破付费墙限制的开源解决方案
内容解锁工具:突破付费墙限制的开源解决方案 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代,优质内容常被付费墙阻隔,形成信…...
LightOnOCR-2-1B小白友好教程:Web界面+API调用双模式教学
LightOnOCR-2-1B小白友好教程:Web界面API调用双模式教学 1. 引言:认识LightOnOCR-2-1B LightOnOCR-2-1B是一个强大的多语言OCR(光学字符识别)模型,它能从图片中准确提取文字内容。这个模型特别适合需要处理多语言文档…...
pdf2htmlEX色彩管理专家指南:高级色彩校准技术
pdf2htmlEX色彩管理专家指南:高级色彩校准技术 【免费下载链接】pdf2htmlEX Convert PDF to HTML without losing text or format. 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2htmlEX 想要将PDF转换为HTML时保持完美的色彩还原吗?pdf2html…...
新能源运维数字化方案:帮我吧助力企业实现全流程智能管控
在“双碳”目标的深入推进下,新能源产业迎来高速发展期,光伏、风电、储能、新能源汽车等领域的市场规模持续扩大,行业发展重心从“投建”转向“运营与服务”。对于新能源企业而言,设备分布广、终端用户分散、设备智能化程度高&…...
ChatTTS 自定义样本实战:如何高效构建个性化语音合成模型
最近在做一个需要个性化语音合成的项目,用到了ChatTTS。说实话,直接拿官方流程走自定义样本训练,那个效率真是让人有点头疼。数据准备繁琐,训练时间长,出来的效果还不一定稳定。经过一番折腾和优化,总算总结…...
AutoDL云平台Jupyter Notebook安全配置指南:从密码保护到端口设置
AutoDL云平台Jupyter Notebook安全配置指南:从密码保护到端口设置 在云计算时代,数据安全已成为开发者不可忽视的核心议题。作为AI开发者和数据科学家的常用工具,Jupyter Notebook在AutoDL等云平台上的安全配置尤为重要。本文将深入探讨如何为…...
TAI-TECH台庆 WCM2012F2SF-900T04 SOP-4 共模滤波器
特性 1.高频下具有高共模阻抗,实现优异的噪声抑制性能。 2.WCM2012F2SF系列实现小型化和低外形。尺寸为2.0x1.2x1.2mm。3.无铅(Pb)且不含卤素,符合RoHS标准。4.工作温度-40~125C(包括自温升)...
方寸之间 体验跃升 | 匠芯创D12x系列助力TCL洗烘一体机打造丝滑交互体验
近日,搭载匠芯创高性能显示控制MCU D12x系列(D121BBV)的TCL洗烘一体机T7W Max上市。其机身配备的1.8寸、分辨率360x360旋钮智慧屏,以顺畅的旋转手感与和灵动的界面动画,成为产品的亮点之一。 方寸旋钮 成就丝滑体验 旋…...
光伏系统中的最大功率跟踪:滑模控制与传统方法的巧妙结合
光伏发电系统,滑膜控制结合扰动观察法和电导增量法,可更快实现 最大功率跟踪。在光伏发电系统的领域里,最大功率跟踪(MPPT)技术一直是提升发电效率的关键所在。传统的扰动观察法和电导增量法在MPPT方面各有优劣&#x…...
