政务系统网站知乎 wordpress 博客

news/2025/9/22 18:15:40/文章来源:
政务系统网站,知乎 wordpress 博客,服装定制一般多少钱,云南专业网站制作公司一、题目描述 给你二叉树的根节点 root #xff0c;返回其节点值 自底向上的层序遍历 。 #xff08;即按从叶子节点所在层到根节点所在的层#xff0c;逐层从左向右遍历#xff09; 示例 1#xff1a; 输入#xff1a;root [3,9,20,null,null,15,7] 输出#xff1a;[…一、题目描述 给你二叉树的根节点 root 返回其节点值 自底向上的层序遍历 。 即按从叶子节点所在层到根节点所在的层逐层从左向右遍历 示例 1 输入root [3,9,20,null,null,15,7] 输出[[15,7],[9,20],[3]]示例 2 输入root [1] 输出[[1]]示例 3 输入root [] 输出[]提示 树中节点数目在范围 [0, 2000] 内-1000 Node.val 1000 二、解题思路 这个问题是关于如何对二叉树进行自底向上的层序遍历。我们可以使用一个队列来进行广度优先搜索BFS并使用一个变量来记录当前层的节点值。在遍历每一层的时候我们使用一个双端队列Deque来存储当前层的节点值这样我们就可以从双端队列的尾部开始遍历从而实现自底向上的层序遍历。 算法步骤 初始化一个空队列queue用于BFS以及一个空的双端队列deque用于存储当前层的节点值。如果root不为空则将其加入queue。初始化一个变量level为0用于标识当前层的奇偶性。当queue不为空时进行以下操作 a. 获取当前层的节点数量size即queue的长度。 b. 遍历当前层的节点对于每个节点 i. 从queue中移除节点并将其值加入deque的头部如果level为偶数或尾部如果level为奇数。 ii. 如果该节点的左子节点不为空将其加入queue。 iii. 如果该节点的右子节点不为空将其加入queue。 c. 将deque转换为列表并加入结果列表result。 d. 将level加1清空deque。返回结果列表result。 三、具体代码 import java.util.ArrayList; import java.util.Deque; import java.util.LinkedList; import java.util.List; import java.util.Queue;public class Solution {public ListListInteger levelOrderBottom(TreeNode root) {ListListInteger result new ArrayList();if (root null) {return result;}QueueTreeNode queue new LinkedList();queue.offer(root);int level 0;while (!queue.isEmpty()) {int size queue.size();DequeInteger deque new LinkedList();for (int i 0; i size; i) {TreeNode node queue.poll();if (node ! null) {deque.offerLast(node.val);queue.offer(node.left);queue.offer(node.right);}}if (!deque.isEmpty()) {result.add(0, new ArrayList(deque));}}return result;} }四、时间复杂度和空间复杂度 1. 时间复杂度 levelOrderBottom 函数会对每个节点进行一次操作其中 n 是树中节点的数量。因此总的时间复杂度是 O(n)。 2. 空间复杂度 空间复杂度主要取决于队列和双端队列中存储的节点数量。在最坏的情况下树是完全不平衡的例如每个节点都只有左子节点或者只有右子节点此时队列和双端队列中存储的节点数量最多为 O(n)。因此总的空间复杂度是 O(n)。 综上所述代码的时间复杂度是 O(n)空间复杂度也是 O(n)其中 n 是树中节点的数量。 五、总结知识点 队列Queue的使用代码中使用了LinkedList类作为Queue的实现用于在BFS中存储待遍历的节点。队列遵循先进先出FIFO的原则。 递归虽然代码中没有直接使用递归但BFS本质上是一种递归的过程通过循环模拟递归的调用栈。 双端队列Deque的使用代码中使用了LinkedList类作为Deque的实现用于在每一层遍历时存储当前层的节点值。双端队列可以同时从两端添加或删除元素。 迭代与循环使用while循环来迭代遍历树的每一层直到队列为空。 条件语句使用if-else语句来判断节点是否为空以及判断队列是否为空。 数据结构转换使用ArrayList和LinkedList之间的转换将Deque中的元素转换为一个List然后添加到结果List中。 布尔变量的使用使用布尔变量level来标志当前层的奇偶性并在每层遍历后取反。 树节点的定义代码中使用了TreeNode类来定义二叉树的节点每个节点包含一个整数值和指向左右子节点的引用。 函数返回值levelOrderBottom函数返回一个包含多层的ListListInteger表示二叉树的自底向上的层序遍历结果。 边界条件的处理在函数开始时检查root是否为空如果为空则直接返回一个空列表。 以上就是解决这个问题的详细步骤希望能够为各位提供启发和帮助。

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

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

相关文章

优化网站步骤常州做网站哪里好

参考:59_Dockerfile保留字简介_哔哩哔哩_bilibili FROM 作用:指定基础镜像,即在这个基础镜像上构建新镜像,如下所示,表示在ubuntu20.04镜像的基础上构建新镜像 FROM ubuntu:20.04 MAINTAINER 作用:镜像…

国内目前比较好的crm系统wordpress优化速度

为什么在大型项目中data需要使用return返回数据呢?答:不使用return包裹的数据会在项目的全局可见,会造成变量污染;使用return包裹后数据中变量只在当前组件中生效,不会影响其他组件。 1、在简单的vue实例中看到的Vue实…

网站优化关键词怎么做张家港网站开发培训

LDA:LDA最大化类间距离,最小化类内距离,使得投影后的不同类别的样本分的更开,属于监督学习。 PCA:PCA最小重构误差,使得投影后的值和原来的值尽量接近,属于非监督学习。 SVM:最大间…

怎样弄一个自己的网站建设监理协会网站

注:题目来源均出自牛客网。 一、选择题 Map(集合)属于Go的内置类型,不需要引入其它库即可使用。 Go-Map_菜鸟教程 在函数声明中,返回的参数要么都有变量名,要么都没有。 C选项函数声明语法有错误&#xff0…

阿里域名购买网站苏州做学校网站的

Java入门教学 java语言介绍 Java是由Sun Microsystems公司(已被Oracle公司收购)于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。 Java分为三个体系: JavaSE(J2SE&…

phpcms如何发布网站网站维护html模板

Redis 和 Mysql 数据库数据如何保持一致性 保持Redis和MySQL数据库数据一致性是一个常见且重要的问题,特别是在使用Redis作为MySQL数据库的缓存层时。以下是几种常用的保证二者数据一致性的策略和方法: 双写一致性(同步更新)&…

辽宁大连直客部七部是什么件搜索引擎优化完整过程

十一、攀登不止小游戏制作 制作微信小游戏大致流程与微信小程序、Web类似,不同的在于是组件的使用。我们此节需要完成的小游戏需求为: 小球触碰矩形块会跳跃或攀爬小球触碰顶部或底部游戏结束点击屏幕将会使小球朝着该方向移动小球进行跳跃时分数会增加…

systemd服务自身重启策略管理

systemd服务自身重启策略管理你贴的这一段是 systemd 的 unit 文件中 [Service] 部分的配置。重点是你问的: Restart=on-failure我来详细解释:1️⃣ Restart 选项 Restart 决定 当服务退出时 systemd 是否重启服务,…

中工信融做网站怎么样网页布局设计摘要

目录 一、环境描述 二、安装mysql 2.1 卸载mysql(如果没安装过,可忽略) 2.1.1 列出安装的mysql 2.1.2 卸载mysql 2.1.3 删除mysql文件目录 2.1.3.1 查看mysql 目录 2.1.3.2 依次删除 2.2 在线安装 2.2.1 下载安装源 2.2.2 安装源rpm 2.2.3 加入rpm密钥 …

快递物流公司网站模板美食网站开发的特点与总结

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

电商网站设计与制作论文手机免费建站app

【Web安全】sqlmap的使用笔记 文章目录 【Web安全】sqlmap的使用笔记1. 目标2. 脱库2.1. 脱库(补充) 3. 其他3.1. 其他(补充) 4. 绕过脚本tamper讲解 1. 目标 操作作用必要示例-u指定URL,检测注入点sqlmap -u http://…

网站建设 视频阿里巴巴外贸圈论坛

原因是每次下载内容在浏览器左下角都有提示,一般都是选择打开所在文件夹,一次手残,点了总是打开此文件导致一下载文件就自动打开。 解决方法。 1.点击右上角的... 2.找到设置-高级设置-下载 3.关掉我标红的位置信息即可。现在看不到啦&…

网站建设从零开始教程网络营销的特点有哪些

产品应用原理图 5-36V耐压 3W射灯应用线路图 产品描述 AP5165B 是一款外围电路简单的连续电流模式的降压型 LED 恒流驱动芯片。在输入电压高于LED 电压时,可以有效地用于驱动一颗或者多颗串联 LED。输出电流可调,可达 1A。适用于3-36V 电压范围的非隔离…

西安高校网站建设定制网站建设网站建设招标采购需求

CSS 滚动捕获 Scroll Snap CSS 滚动捕获允许开发者通过声明一些位置(或叫作捕获位置)来创建精准控制的滚动体验. 通常来说轮播图就是这种体验的例子, 在轮播图中, 用户只能停在图 A 或者图 B, 而不能停在 A 和 B 的中间. 比如平时用淘宝或小红书, 当你上滑到下一个推荐内容时…

java log4j 代码中 新增按日保存日志文件的功能

/*** log4j.logger.oaReceviceBudgetApproveStatusTaskServiceLog=info, stdout, oaReceviceBudgetApproveStatusTaskService* log4j.additivity.oaReceviceBudgetApproveStatusTaskServiceLog = true* log4j.appender…

训练集,验证集,测试集

在机器学习和深度学习中,我们通常不会用全部数据来训练模型,而是将其划分为三个独立的部分:训练集、验证集和测试集。 这就像一个学生准备考试一样: 1. 训练集 (Training Set) 训练集是学生上课时做的所有练习题。…

Android 项目:画图白板APP开发(六)——分页展示 - 教程

Android 项目:画图白板APP开发(六)——分页展示 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

ESP32 读取旋转编码器

1、旋转编码器原理1.1、以A输入为时钟,边沿中断检测A输入的上升边沿,同时在中断回调函数判断B的电平状态 ①正转CW:A上升沿,B低电平; ②反转CWW:A上升沿,B高电平; 1.2、中间按键直接使用电平或者电平中断检测;…