day14I102.二叉树的层序遍历

1、102.二叉树的层序遍历

题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/
文章链接:https://programmercarl.com/0102.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE添加链接描述
视频链接:https://www.bilibili.com/video/BV1GY4y1u7b2/?vd_source=721f65ae0501389782be0dcb48a2c421

package com.fourteenday.tree;import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;/***  层序遍历二叉树:使用队列数据结构进行辅助*/
public class CheckBinaryTree {public List<List<Integer>> resList = new ArrayList<List<Integer>>();public void checkFun01(TreeNode root){if (root == null) return;//创建一个队列用于广度优先搜索DFSQueue<TreeNode> queue = new LinkedList<TreeNode>();queue.offer(root); //将根节点入队//当队列不为空的时候进行遍历while (!queue.isEmpty()){//用于存储当前层级的节点值List<Integer> itemList = new ArrayList<>();//当前层级节点的个数int len = queue.size();//遍历当前层级的节点while (len > 0){//出队第一个节点TreeNode tmpNode = queue.poll();//将节点的值添加到列表中itemList.add(tmpNode.val);//将节点的左右节点入列if (tmpNode.left !=null) queue.offer(tmpNode.left);if (tmpNode.right !=null) queue.offer(tmpNode.right);//假设有左右节点,又回到外层循环的判断条件队列是否为空,现队列不为空继续执行len--;}//将当前层级的节点值列表添加到结果列表中(每一次)resList.add(itemList);}}/***这个方法 levelOrder(TreeNode root) 是在类 CheckBinaryTree 中添加的,它的目的是为了方便外部调用和获取二叉树的层序遍历结果。在原先的代码中,checkFun01(TreeNode root) 是执行二叉树的层序遍历操作,将结果保存在实例变量 resList 中。为了让外部可以方便地获取层序遍历结果,新增了 levelOrder(TreeNode root) 方法,它会调用 checkFun01(TreeNode root) 执行遍历,并返回遍历结果 resList。这样外部使用者就可以直接调用 levelOrder(TreeNode root) 获取层序遍历结果,而不需要再单独执行层序遍历操作。这是一种提供更便利的方式,简化了用户的操作,并且符合代码的封装和模块化设计原则* @param root* @return*/public List<List<Integer>> levelOrder(TreeNode root){checkFun01(root);return resList;}public static void main(String[] args) {CheckBinaryTree cbt = new CheckBinaryTree();TreeNode root = new TreeNode(1, new TreeNode(2, new TreeNode(4), new TreeNode(5)), new TreeNode(3, new TreeNode(6), new TreeNode(7)));List<List<Integer>> lists = cbt.levelOrder(root);System.out.println(lists);}
}

解题思路

请添加图片描述
1、层序遍历二叉树借用队列进行辅助遍历
2、返回的是一个二维数组,每一层的节点为一数组,将所有层级的节点数组统一在一起为一个数组就是一个二维数组的形态
3、当队列不为空的时候,优先记录队列中存在的元素,当len>0(存在几个元素就遍历取出几个元素)将当前层级的节点取出放入到linklist中,再将该节点的左右孩子放入队列中

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

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

相关文章

详细教程:Postman 怎么调试 WebSocket

WebSocket 是一个支持双向通信的网络协议&#xff0c;它在实时性和效率方面具有很大的优势。Postman 是一个流行的 API 开发工具&#xff0c;它提供了许多功能来测试和调试 RESTful API 接口&#xff0c;最新的版本也支持 WebSocket 接口的调试。想要学习更多关于 Postman 的知…

PDE数值解中,为什么要引入弱解(weak solution)的概念?

See https://www.zhihu.com/question/24243246?utm_sourceqq&utm_mediumsocial&utm_oi1315073218793488384

[Python]黑色背景白色块滑动视频

黑色背景白色块滑动视频&#xff0c;单帧效果如下&#xff1a; 配置参数 1920 1080 400 400 300 60 1920x1080.avi import numpy as np import cv2 as cv import os import syswidth 1920 height 1080 rect_szx 400 rect_szy 300 sz_y_init 400 fps 24width int(sys.a…

十进制小数 与 二进制小数 互转

1、十进制小数 转 二进制小数 公式 小数 * 2得到n1, 将n1的整数作为二进制数第一位&#xff1b;n1的小数 * 2得到n2, 将n2的整数作为二进制数第二位&#xff1b;n2的小数 * 2得到n3, 将n3的整数作为二进制数第三位&#xff1b;… 重复以上步骤&#xff0c;直到小数部分为0或者…

竞赛选题 深度学习+opencv+python实现车道线检测 - 自动驾驶

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &am…

在服务器上解压.7z文件

1. 更新apt sudo apt-get update2. 安装p7zip sudo apt-get install p7zip-full3. 解压.7z文件 7za x WN18RR.7z

java合成多个pdf为一个pdf

pom文件 <dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version></dependency>主文件 import com.lowagie.text.Document; import com.lowagie.text.pdf.PdfCopy; import com.lo…

求三维坐标绕坐标轴旋转后的坐标值

目的 旋转矩阵 应用 沿单个坐标轴旋转 沿多个坐标系旋转 目的 由于其他文章原理介绍比较详细&#xff0c;但应用方面较少。本文直接介绍旋转矩阵的应用&#xff0c;条件为坐标系不变&#xff0c;求旋转后的三维坐标。本文方法较傻瓜式&#xff0c;需要自己进行测试以确认是…

HUAWEI(26)——防火墙双机热备

一、拓扑 二、需求 PC2 ping PC1 FW1与FW2双机热备,FW1为active,FW2为Standby,抢占延时1s VRRP 三、配置 1.IP地址,防火墙接口加入区域 防火墙用户名:admin 防火墙旧密码:Admin@123 防火墙新密码:admin@123 [FW1]interface GigabitEthernet 1/0/0 [FW1-GigabitEthe…

振弦传感器和无线振弦采集仪在隧道安全监测的解决方案

振弦传感器和无线振弦采集仪在隧道安全监测的解决方案 隧道作为交通工程的重要组成部分&#xff0c;具有极高的安全风险&#xff0c;因此隧道安全监测是必不可少的。振弦传感器和无线振弦采集仪作为隧道安全监测的两种重要设备&#xff0c;能够有效地监测隧道的振动情况&#…

elasticsearch(ES)分布式搜索引擎03——(RestClient查询文档,ES旅游案例实战)

目录 3.RestClient查询文档3.1.快速入门3.1.1.发起查询请求3.1.2.解析响应3.1.3.完整代码3.1.4.小结 3.2.match查询3.3.精确查询3.4.布尔查询3.5.排序、分页3.6.高亮3.6.1.高亮请求构建3.6.2.高亮结果解析 4.旅游案例4.1.酒店搜索和分页4.1.1.需求分析4.1.2.定义实体类4.1.3.定…

解决uniapp里scroll-view横向滚动的问题

一、前言 本以为是一件很简单的事&#xff0c;结果浪费了整整一个上午&#xff0c;并且问题并没有全部解决....后来没办法&#xff0c;用了touchmove模拟的滑动&#xff0c;如果有好的解决方法麻烦告诉我...非常感谢~ 一、问题 其实我想要实现的功能很简单&#xff0c;就是一…

微服务、SOA 和 API 之间的区别

在软件开发中&#xff0c;组织的投资方式发生了重大转变&#xff0c;部署了面向架构的方法。这一切都始于 SOA&#xff0c;然后转变为我们称之为微服务的东西。添加到其中的是另一个概念&#xff0c;指定为 API。 在过去的几年里&#xff0c;SOA 和微服务仍然是讨论的话题。随…

【红外双目有监督】CATS系列数据集探索加载器

论文&#xff1a; CATS: A Color and Thermal Stereo Benchmark https://www. flir.com/oem/adas/adas-dataset-form/.Flir thermal dataset 数据集规格 内容 总共 26,442 个 完全注释的帧&#xff0c;以及 15 个不同对象类别的520,000 个 边界框注释。 图片 9,711 张热图像和…

Lazysysadmin靶机

信息收集 主机发现 nmap -sn 192.168.88.0/24 //-sn&#xff1a;制作主机发现&#xff0c;不做端口扫描&#xff1b;扫描结果包含本机IP 端口扫描 nmap --min-rate 10000 -p- 192.168.88.136 扫描端口详细信息 端口扫描发现&#xff0c;该主机的22、80、139、445、3306、…

软件开源快速开发框架:降本增效,助力流程化办公!

随着时代的进步和社会的发展&#xff0c;应用软件开源快速开发框架的优势特点&#xff0c;可以让不少客户朋友顺利实现流程化办公&#xff0c;朝着数字化方向迈进。流辰信息是专业研发低代码技术平台的服务商&#xff0c;一直在低代码平台领域深耕细作&#xff0c;努力钻研&…

合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&#xff1a;最终&#xff0c;合并后数组…

【spring data jpa】数据的增删改查(CRUD)

一、添加依赖 在pom文件中添加spring data jpa依赖 <dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>3.1.4</version> </dependency> <dependency><gr…

如何使用 arrayList.removeAll(Collection<?> c)?

引言 对于 Collection 集合及其实现类都有 removeAll(Collection<?> c)。 对于ArrayList 的实例对象&#xff0c;在数据比较多的情况下&#xff0c;方法 removeAll() 的传参 c 的类型是 HashSet会比是 ArrayList 的情况快的多。 原因 我们来细看一下ArrayList类的re…

perf性能分析

安装 apt install linux-tools-common linux-tools-generic 可能安装在/usr/bin/perf&#xff0c;如果版本不对&#xff0c;可以看看 /usr/lib/linux-tools/[version]/ 下有没有perf&#xff0c;如果有的话替换一下就可以 使用 perf record -g -p pid # 记录数据&#x…