【剑指Offer题解:java】从上往下打印二叉树

2023-11-10

题目

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

分析

  1. 初始化:一个队列Queue queue , 将root节点入队列queue
  2. 如果队列不空,做如下操作:
  3. 弹出队列头,保存为node,将node的左右非空子节点加入队列
  4. 做2,3步骤,直到队列为空

image.png

image.png

image.png

代码

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

public class Solution {
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        ArrayList<Integer> list = new ArrayList<>();
        if(root == null) return list;
        //使用队列来辅助
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while (!queue.isEmpty()){
            TreeNode node = queue.poll();
            list.add(node.val);
            if(node.left!=null) queue.offer(node.left);
            if(node.right!=null) queue.offer(node.right);
        }
        return list;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【剑指Offer题解:java】从上往下打印二叉树 的相关文章

  • PHP 高级作业队列

    我正在使用 cron 制作一个一天包含 2000 个作业的脚本 意味着这是服务器端并自动完成所有作业 但该作业需要同时运行 10 个 或指定数量的作业 作业 就像你看到 IDM 互联网下载管理器 一样 有一个队列功能 它一次运行多个作业 如
  • 在 MySQL 中创建链表或类似队列?

    我有一个需要按特定顺序显示的项目表 但该顺序可以更改 可以在开头 结尾或中间添加项目 并且可以重新排列项目 如何设置表来跟踪该顺序 以便易于修改 但也可以通过单个查询按顺序获取列表 例如 我可以有一个 NEXT ID 列来执行链接列表样式
  • Swift:为蓝牙中央管理器选择队列

    我正在开发一个应用程序 该应用程序将通过 BLE 与智能设备连接并与其通信 问题是 在哪个队列中处理蓝牙事件的最佳实践是 我读过很多教程 在所有教程中我发现了这一点 centralManager CBCentralManager deleg
  • d3.js v5 - Promise.all 替换 d3.queue

    我已经使用 d3 js v4 一段时间了 我了解到 Mike Bostock 已将 v5 版本中的 d3 queue 替换为 Promise 原生 JavaScript 对象 我想与您核实一下我编写的这段代码是否正确地 异步 这些 URL
  • Keras 的 OrderedEnqueuer 是否保证了批次的顺序?

    我有一个习惯keras utils sequence它以特定 且关键 的顺序生成批次 但是 我需要跨多个核心并行化批量生成 名字是不是 OrderedEnqueuer 意味着结果队列中批次的顺序保证与原始队列的顺序相同keras utils
  • 如何在Linux中找到处理器队列长度

    尝试确定 Linux 计算机上的处理器队列长度 准备运行但当前未运行的进程数 Windows 中有一个针对此指标的 WMI 调用 但对 Linux 不太了解 我正在尝试挖掘 proc 和 top 以获取信息 有没有办法确定CPU的队列长度
  • 如何在 celery task.apply_async 中使用优先级

    我有一个testcelery 中的队列 我为它定义了一个任务 celery app task queue test ignore result True def priority test priority print priority 它
  • 持久 Akka 邮箱和无损

    在 Akka 中 当一个 actor 在处理消息时死亡 内部onReceive 该消息丢失 有没有办法保证无损 有没有办法配置 Akka 始终保留消息before将他们发送到onReceive 以便在演员死亡时可以恢复并重播 也许像持久邮箱
  • 如何在Mule中创建独占队列消费者?

    在 ActiveMQ 中 您可以为队列配置独占消费者 例如 Queue Name Here consumer exclusive true 如何在 Mule 中配置像上面这样的独占消费者 您需要对队列名称进行 URL 编码 因为 Mule
  • Node.js 公牛队列中的作业陷入“等待”状态

    我有一堆工作在公牛队列中 其中一个被卡住了 1 个多小时 通常需要大约 2 分钟才能运行 但没有失败 我无法使用我使用的 bull arena UI 将作业从活动状态中删除 因此我删除了 Redis 中活动作业的密钥 这消除了卡住的活动作业
  • 使用 Celery 创建动态队列

    这是我的场景 当用户登录我的网站时 我会为给定用户排队一堆任务 通常每个任务需要 100 毫秒 每个用户有 100 多个任务 这些任务排队到默认的 Celery 队列中 并且我有数百个工作线程正在运行 当任务在后端完成时 我使用 webso
  • 为什么Cocoa里没有队列?

    我最近发现 Cocoa 中没有内置队列 在本例中为 Touch 为什么不 队列是计算机编程中最基本的数据结构之一 我看到有人建议使用NSMutableArray 但这对于弹出 出列来说效率极低 因为它需要删除索引 0 处的对象 这会将所有元
  • 使用 Celery(RabbitMQ、Django)检索队列长度

    我在 django 项目中使用 Celery 我的代理是 RabbitMQ 我想检索队列的长度 我浏览了 Celery 的代码 但没有找到执行此操作的工具 我在 stackoverflow 上发现了这个问题 从客户端检查 RabbitMQ
  • “入队”和“出队”之间的区别

    有人可以解释一下主要区别吗 我对任何语言编程中的这些函数都没有明确的了解 C 和 C 等编程语言中的一些基本数据结构是堆栈和队列 堆栈数据结构遵循 先进后出 策略 FILO 其中插入或 推入 堆栈的第一个元素是最后一个从堆栈中删除或 弹出
  • NodeJS 推送队列,由 Laravel Worker 消耗

    我正在尝试使用节点应用程序发送到 SQS 的消息 因此 推送 操作由服务器 A 上的 Node App 执行 监听 操作由服务器 B 上的 Laravel App 执行 我的问题 我不知道如何格式化要使用的有效负载php artisan q
  • TensorFlow 队列关闭后可以重新打开吗?

    我想将项目入队 关闭队列以确保其他会话将所有剩余项目出队 然后在下一个纪元稍后重新打开它 这可能吗 q tf FIFOQueue close q q close reopen q with tf Session as sess sess r
  • Laravel 5.1 失败的排队作业在 failed() 方法上失败,阻止调用队列失败事件处理程序

    我正在测试 Laravel 5 1 中的队列功能 我可以让作业在我的数据库表中排队 称为作业 并且可以让它们成功运行 我还创建了一个名为 failed jobs 的队列失败表 为了测试它 在作业表中 我操作有效负载数据以使其失败 然后像这样
  • $(this).dequeue();与下一个();

    如果我这样做有什么区别吗 queue queue function next next queue function next next versus queue queue function this dequeue queue func
  • Python多重处理使用队列写入同一文件

    我知道 Stack Exchange 上有很多与将多处理结果写入单个文件相关的帖子 并且我在阅读了这些帖子后就开发了我的代码 我想要实现的是并行运行 RevMapCoord 函数并使用 multiprocess queue 将其结果写入一个
  • C# 创建函数队列

    我写了一个名为 QueueManager 的类 class QueueManager Queue functionsQueue public bool IsEmpty get if functionsQueue Count 0 return

随机推荐

  • disabled_button

    直接看题目 然后干他 这里说flag在按钮上 但是我们就是按不了这个flag 那直接看HTML呗 可以看到它这里有个搞鬼的东东 一搜 可以知道这个东西禁止让你输入 你不让我输入 我就给你删了呗 然后我们可以点flag 一点 flag就出来了
  • 关于漏洞"这个页面包含一个错误/警告信息,可能会导致敏感信息泄露"

    公司开发的产品 在用软件扫描漏洞时 扫出了这么一个漏洞 可以看出有漏洞的地方是登录页面 在登录中 主要逻辑如下 一些拒绝登录是通过抛异常 gt 然后捕获异常 gt 获取异常信息 gt 跳回到登录页面并展示错误信息 下面为代码示例 Requs
  • 如何获取 docker 容器(container)的 ip 地址

    1 进入容器内部后 lcc lcc docker exec it docker mysql bash root b3b1d61142df root b3b1d61142df cat etc hosts 127 0 0 1 localhost
  • Hive 是怎样保存元数据的

    保存元数据的方式有 内存数据库derby 本地mysql数据库 远程mysql数据库 本地的mysql数据库用的比较多 因为本地读写速度都比较快 内存数据库derby 安装小 但是数据存在内存 不稳定 mysql数据库 数据存储模式可以自己
  • React 中的元素、组件、实例和节点

    React 元素其实就是一个简单JavaScript对象 一个React 元素和界面上的一部分DOM对应 描述了这部分DOM的结构及渲染效果 一般我们通过JSX语法创建React 元素 React 元素可以分为两类 DOM类型的元素和组件类
  • Java常用API

    文章目录 1 API 1 1 API概述 帮助文档的使用 1 2 键盘录入字符串 2 String类 2 1 String概述 2 2 String类的构造方法 2 3 创建字符串对象的区别对比 2 4 字符串的比较 2 5 String方
  • Docker常用镜像命令

    帮助命令 查看docker版本 docker version 对docker信息的描述 docker info docker的帮助命令 docker help 详解 docker OPTIONS COMMAND docker的命令公式 镜像
  • Text to image论文精读MISE:多模态图像合成和编辑Multimodal Image Synthesis and Editing: A Survey

    由于信息在现实世界中以各种形式存在 多模态信息之间的有效交互和融合对于计算机视觉和深度学习研究中多模态数据的创建和感知起着关键作用 近期 OpenAI 发布的 DALLE 2 和谷歌发布的 Imagen 等实现了令人惊叹的文字到图像的生成效
  • 「经验分享」一款PCB电路板设计要经历哪些流程?

    一款PCB电路板设计主要包括明确产品需求 硬件系统设计 器件选型 PCB绘制 PCB生产打样 焊接调试等步骤 那么这些步骤都有哪些需要注意点呢 小编带你细品 一定要细品 一 明确需求 在一个硬件设计之初 首先要做的是明确产品的需求 这里主要
  • BMP文件格式详解(BMP file format)

    BMP文件格式 又称为Bitmap 位图 或是DIB Device Independent Device 设备无关位图 是Windows系统中广泛使用的图像文件格式 由于它可以不作任何变换地保存图像像素域的数据 因此成为我们取得RAW数据的
  • 【SIMULINK】基于DQ0模型的三相异步电机自制仿真模型教程

    SIMULINK 基于DQ0模型的三相异步电机自制仿真模型 其实 打开simscape自带的异步电机模型 里面也是基于DQ0的 电机的模型定子电压作为输入 定子电流是输出 内部结构 omega 1 是DQ坐标系的转速 为0时退化为 alph
  • 计算机是人类的好伴侣 作文,书是我们的好伴侣_我和书的故事作文

    书 大家是并不陌生的 它会让人陶醉享受 也会使人沉迷于此 总得来说 书 是我们的好伴侣 不管是休闲娱乐 还是读后写作都少不了它 说到我喜欢的书 我还是算得上是个小小小的 书迷 但是我最喜欢沈石溪所写的动物小说 内容精彩而又丰富 把这所有的动
  • Android性能分析和优化之traces.txt(ANR分析)

    ANR 类型分类 1 KeyDispatchTimeout 5 seconds 主要类型按键或触摸事件在特定时间内无响应 按键或者触摸引起的ANR的时间定于是在AMS中 static final int KEY DISPATCHING TI
  • C语言——文件操作

    C语言文件操作 使用文件的原因 文件 程序文件 数据文件 文件名 文件的打开和关闭 文件指针 文件的打开和关闭 文件的顺序读写 文件的随机读写 fseek ftell rewind 文本文件和二进制文件 文件读取结束的判定 文件缓冲区 使用
  • Python 入门习题

    如果下面代码有问题或者你有更好的实现方法欢迎与我私信 1 输入一个字符串 内容是带小数的实数 例如 123 45 输出是两个整数变量x和y x是整数部分123 y是小数部分45 你可以用split函数完成 str input L str s
  • iOS编程基础-OC(七)-运行时系统(续)

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 第7章 运行时系统 7 4 动态绑定 动态绑定 dynamic binding 是指在运行程序时 而不是在编译时 将消息与方法对应起来的处理过程 在运行程序和发送消息
  • Motionbuilder矩阵计算方式

    基本使用 对于类型为 FBModel 的对象 有 GetMatrix SetMatrix 方法来获取及设置其变换矩阵 GetMatrix pMatrix FBMatrix pWhat kModelTransformation pGlobal
  • SpringBoot 集成 Apollo 配置中心,一文搞定!(万字长文)

    由于 Apollo 概念比较多 刚开始使用比较复杂 最好先过一遍概念再动手实践尝试使用 1 背景 随着程序功能的日益复杂 程序的配置日益增多 各种功能的开关 参数的配置 服务器的地址 对程序配置的期望值也越来越高 配置修改后实时生效 灰度发
  • STM32操作增量式编码器(一)----使用外部中断实现测速

    1 编码器概述 这里对此不再详细说明 本博文重在如何使用编码器 有兴趣的同学可以去网上了解 或者参考一下博文 旋转编码器工作原理 2 增量式编码器控制思路 图2 1 编码器实物图 图2 2 编码器与MCU接线图 我们首先需要清楚编码器输出什
  • 【剑指Offer题解:java】从上往下打印二叉树

    题目 从上往下打印出二叉树的每个节点 同层节点从左至右打印 分析 初始化 一个队列Queue queue 将root节点入队列queue 如果队列不空 做如下操作 弹出队列头 保存为node 将node的左右非空子节点加入队列 做2 3步骤