【剑指 Offer 32】从上到下打印二叉树 II

题目:

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

例如:给定二叉树: [3,9,20,null,null,15,7]3/ \9  20/  \15   7返回其层次遍历结果:
[[3],[9,20],[15,7]
]

思考:

  • 题目要求从上到下按层打印二叉树,也就是二叉树的广度优先搜索(BFS)

  • BFS 通常借助 队列 的先入先出特性来实现

  • 头结点先入队(需要先判断头结点不为空,防止空指针)

  • 然后开始循环,条件为队列不为空

  • 循环拿出队列中现有的所有结点,也就是本层节点,共 queue.size() 个,采用 i–的方式循环,因为队列在不停出队,长度是变化的

  • 拿出每一个结点加入到一个 list,即本层的索引结点,然后判断本层节点的左右结点是否存在,存在就加入到对列中,为下层的节点

  • 将本层节点的 list 加入到结果集合,开始下层循环

题解:

class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> res = new ArrayList<>();//辅助对列Queue<TreeNode> queue = new LinkedList<>();//这里需要判断一下,不然root为null会空指针if (root != null) queue.add(root);while (!queue.isEmpty()){List<Integer> tmp = new ArrayList<>();//用i--,i++不行for (int i = queue.size(); i > 0 ; i--) {TreeNode node = queue.poll();if (node.left != null) queue.add(node.left);if (node.right != null) queue.add(node.right);tmp.add(node.val);}res.add(tmp);}return res;}
}

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

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

相关文章

流程图如何制作?5步快速画出好看的流程图!

流程图是一种图形化工具&#xff0c;描述某个过程或者操作的步骤&#xff0c;以及某种业务系统的具体流程。流程图通常由各种图形符号、形状、箭头组成&#xff0c;可以清晰的表示出流程或系统中各种步骤、每个环节之间的关系、条件判断、数据的流动和处理过程等。 在线流程图软…

【LeetCode每日一题】——85.最大矩形

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 困难 三【题目编号】 85.最大矩形 四【题目描述】 给定一个仅包含 0 …

excel 计算 分位值

_XLFN.QUARTILE.EXC(Result 1!G:G,2) 和 PERCENTILE 都可以用来计算一组数据的分位数&#xff0c;但是它们的计算方式略有不同。 _XLFN.QUARTILE.EXC(Result 1!G:G,2) 是 Excel 中的一个函数&#xff0c;在计算一个数据集的四分位数时使用。其中&#xff0c;第一个参数 Result…

P1144 最短路计数

最短路计数 题目描述 给出一个 N N N 个顶点 M M M 条边的无向无权图&#xff0c;顶点编号为 1 ∼ N 1\sim N 1∼N。问从顶点 1 1 1 开始&#xff0c;到其他每个点的最短路有几条。 输入格式 第一行包含 2 2 2 个正整数 N , M N,M N,M&#xff0c;为图的顶点数与边数…

【基础类】—三栏页面布局的方案和优缺点

一、假设高度已知&#xff0c;中间宽度自适应&#xff0c;三栏&#xff08;列&#xff09;布局的方案有哪些&#xff1f; float浮动、absolute绝对定位、flex弹性盒子、table表格布局、grid网格布局 浮动 float <style>* {margin: 0;padding: 0;}.container {width: 1…

内网穿透-————SSH远程连接树莓派

前言 文章目录 前言内网穿透实现公网SSH远程连接树莓派1. 在树莓派上安装[cpolar客户端](https://www.cpolar.com/)2. 在树莓派浏览器中输入本地9200端口3. 在公共互联网的电脑的命令行界面输入命令 内网穿透实现公网SSH远程连接树莓派 随着科技的进步和信息技术的发展&#x…

异步javaScript

在本文中&#xff0c;我们将解释什么是异步编程&#xff0c;为什么我们需要它&#xff0c;并简要讨论 JavaScript 历史上异步函数是怎样被实现的。 预备知识&#xff1a;基本的计算机素养&#xff0c;以及对 JavaScript 基础知识的一定了解&#xff0c;包括函数和事件处理程序…

20天学会rust(三)没有object的rust怎么面向对象?

面向对象我们都很熟悉&#xff0c;可以说它是一种软件开发最重要的编程范式之一&#xff0c;它将程序中的数据和操作数据的方法组织成对象。面向对象有几个重要特性&#xff1a; 封装、继承和多态&#xff0c;基于这些特性带来了在可重用性、可维护性、扩展性、可靠性的优点。 …

浅析pom文件标签功能

问题&#xff1a; 对maven项目的pom文件结构和标签不是很清晰 学习笔记&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project><parent><!-- 父项目信息 --></parent><!-- 声明项目描述符遵循哪一个POM模型版…

自然语言处理从入门到应用——LangChain:记忆(Memory)-[基础知识]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 默认情况下&#xff0c;链&#xff08;Chains&#xff09;和代理&#xff08;Agents&#xff09;是无状态的&#xff0c;这意味着它们将每个传入的查询视为独立的&#xff08;底层的LLM和聊天模型也是如此&#xff09;…

用Rust实现23种设计模式之原型模式

在 Rust 中&#xff0c;原型模式可以通过实现 Clone trait 来实现。原型模式是一种创建型设计模式&#xff0c;它允许通过复制现有对象来创建新对象&#xff0c;而无需显式地使用构造函数。下面是一个使用 Rust 实现原型模式的示例&#xff0c;带有详细的代码注释和说明&#x…

shell 入门练习小记

一、hello world #!/bin/bash echo "Hello World !"#! 为约定的标记&#xff0c;告诉系统这个脚本需要什么解释器执行&#xff0c;后接绝对路径 /bin/bash 表示期望 bash去解析并运行shell echo用于向窗口输出文本 chmod x ./test.sh #给脚本赋执行权限 ./test.sh …

Centos7克隆快速复制多台虚拟机|互通互联

背景&#xff1a;有时候&#xff0c;我们在用虚拟机的时候会用到多个进行使用。重新安装会花费大量的时间&#xff0c;此时&#xff0c;我们可以通过vmware虚拟机自带的功能快速克隆出完全相同的系统。 前提&#xff1a;被克隆的虚拟机系统要处于关闭状态 步骤&#xff1a;…

Android入门教程||Android 架构||Android 应用程序组件

Android 架构 Android 操作系统是一个软件组件的栈&#xff0c;在架构图中它大致可以分为五个部分和四个主要层。 Linux内核 在所有层的最底下是 Linux - 包括大约115个补丁的 Linux 3.6。它提供了基本的系统功能&#xff0c;比如进程管理&#xff0c;内存管理&#xff0c;设…

ChatGPT FAQ指南

问:chatgpt 国内不开放注册吗? OpenAI不允许大陆和香港用户注册访问 openai可以的,chatGPT不行 以下国家IP不支持使用 中国(包含港澳台) 俄罗斯 乌克兰 阿富汗 白俄罗斯 委内瑞拉 伊朗 埃及 问:ChatGPT和GPT-3什么关系? GPT-3是OpenAI推出的AI大语言模型 ChatGPT是在G…

spring eurake中使用IP注册

在开发spring cloud的时候遇到一个很奇葩的问题&#xff0c;就是服务向spring eureka中注册实例的时候使用的是机器名&#xff0c;然后出现localhost、xxx.xx等这样的内容&#xff0c;如下图&#xff1a; eureka.instance.perferIpAddresstrue 我不知道这朋友用的什么spring c…

H263压缩码流如何分解为一个一个单元并查询到其宽高?

H263码流尺寸规格有限&#xff0c;只有以下几种&#xff1a; H263码流有四个分层&#xff1a; 1、图像层 2、块组 3、宏块 4、块 下面分别介绍&#xff1a; 具体介绍如下&#xff0c;5.1.3中红色框选部分就是压缩码流的宽高指示&#xff1a; 图像层 上面就是H263的图像层&am…

【回眸】备考PMP考点汇总 四(距离考试还有12天)

目录 前言 【回眸】备考PMP考点汇总 四&#xff08;距离考试还有12天&#xff09; 3、敏捷阶段框架 4、Scrum敏捷实践 5、敏捷交付框架 6、推测阶段 7、用户故事卡片 8、用户故事优先级 9、风险调整代办事项列表 10、用户故事估算 11&#xff1a;Scrum敏捷实践 12、…

使用docker部署一个jar项目

简介: 通过docker镜像, docker可以在服务器上运行包含项目所需运行环境的docker容器, 在线仓库里有很多各个软件公司官方发布的镜像, 或者第三方的镜像. 如果我们需要使用docker把我们的应用程序打包成镜像, 别的机器上只要安装了docker, 就可以直接运行镜像, 而不需要再安装应…

拆分PDBQT文件并将其转换为PDB格式

拆分PDBQT文件转为PDB格式 1. vina_split拆分PDBQT文件 假设你用AutoDock Vina做了对接&#xff0c;那么所有预测的结合构象都被放入一个多构象 PDBQT 文件中&#xff0c;如果需要拆分后进行可视化分析&#xff0c;那么Vina官方自带了vina_split来进行拆分。下面是vina_split…