【剑指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】从上往下打印二叉树 的相关文章

  • 通过 C++ 互操作或其他方式实现 C# 第一类延续?

    我们有一个非常高性能的多任务 近乎实时的 C 应用程序 这一性能主要是通过使用自制的调度程序在内部实施协作多任务来实现的 这通常称为微线程 在这个系统中 所有任务都通过队列与其他任务通信 我们遇到的具体问题似乎只能通过 C 不支持的第一类延
  • 使用队列进行基数排序

    我想创建一个基数排序 http en wikipedia org wiki Radix sort使用队列实现 我无法弄清楚我的代码的哪一部分有问题或者我应该阅读哪些资源 我的代码可能完全错误 但这是我的实现 没有任何帮助 我还没有参加数据结
  • 使用 Tensorflow 对象检测 api 打乱训练数据集

    我正在使用 Faster RCNN 模型和 Tensorflow 对象检测 API 来开发徽标检测算法 我的数据集按字母顺序排列 因此有一百个阿迪达斯徽标 然后是一百个苹果徽标等 我希望在训练时对其进行洗牌 我在配置文件中添加了一些值 tr
  • 如何在 celery task.apply_async 中使用优先级

    我有一个testcelery 中的队列 我为它定义了一个任务 celery app task queue test ignore result True def priority test priority print priority 它
  • JMS QueueSender 线程安全吗?

    我想在多线程环境中使用 QueueSender Is QueueSender send 线程安全 No a MessageProducer QueueSender不是线程安全的 或者更具体地说 Session http java sun c
  • Java中的快速队列

    我正在寻找一个快速queueJava 中的实现 我看到LinkedList实施Queue接口 但它只会像LinkedList正确的 有没有一种方法可以让队列更快 特别是对于add 我只需要poll add并检查empty 以后我可能还需要一
  • 如何在没有线程或任务队列的情况下在 Flask 中运行后台作业

    我正在使用 Flask restplus 构建 REST API 我的端点之一获取从客户端上传的文件并运行一些分析 该作业最多需要 30 秒 我不希望这项工作阻塞主进程 因此端点将立即返回 200 或 201 响应 作业仍然可以运行 结果将
  • 有没有更好的方法来实现队列的删除方法?

    首先 请承认我确实想要一个功能Queue
  • 使用 Javascript 进行速率限制并将 ajax 调用排队为每 15 秒一次

    我有一个应用程序 每次用户执行某些操作时都会自动发送推文 如果用户愿意 可以轻松地每秒执行一次该操作 Twitter 的速率限制表示 它关注 15 分钟内发生了多少条推文 从技术上讲 我认为我总是低于 15 分钟标记 但 Twitter 似
  • “入队”和“出队”之间的区别

    有人可以解释一下主要区别吗 我对任何语言编程中的这些函数都没有明确的了解 C 和 C 等编程语言中的一些基本数据结构是堆栈和队列 堆栈数据结构遵循 先进后出 策略 FILO 其中插入或 推入 堆栈的第一个元素是最后一个从堆栈中删除或 弹出
  • 队列对象只能通过继承在进程之间共享

    我有两个 python 类 它们共享一个基类 可以说它定义了一个 multiprocessing Queue 每个类都将在单独的子进程上启动 并且需要通过队列共享信息 现在 如果基类定义了一个队列 那么每个子类对象将实例化它自己的队列 从而
  • 通过值获取 std::queue 中元素的索引

    有没有一种简单的方法来获取元素在 a 中的位置std queue通过它在 C 中的值 例如 std queue
  • 使用java工具的类似Sidekiq的队列?

    我想要一个工作队列 其行为几乎与 ruby 的 sidekiq 完全相同 它不need使用 Redis 但它可以 我只是不能使用 ruby 甚至不能使用 Jruby 基本上 我希望能够创建使用某些参数运行的作业 并且工作池执行作业 工作人员
  • Azure 有害队列计数警报规则

    在之前的一个项目中 我设法设置了一个警报规则 该规则会查看有害队列消息计数 并在队列中存在某些内容时 每天一次 使用 webhook 向 slack 发出警报 我试图找到它在 Azure 中的位置 因为看起来事情已经发生了变化 如果这不是
  • 如何获取队列中的第 n 个项目?

    我的应用程序中有许多队列和优先级队列 我想轻松访问这些队列中的第 n 个项目 但没有看到使用 API 实现此目的的简单方法 我想我可以创建一个Iterator并迭代到第 n 个元素或使用toArray index 但似乎应该有一个更简单的方
  • java中队列的实现

    在 Java 中实现队列是一个非常常见的面试问题 我在网上冲浪 看到了许多实现 他们做了一些奇特的事情 比如实现队列接口和编写自己的addLast and removeFirst 方法 我的问题是我不能使用LinkedList 类并使用其预
  • 有队列实现吗?

    任何人都可以建议使用 Go 容器来实现简单快速的 FIF 队列 Go 有 3 种不同的容器 heap list and vector 哪一种更适合实现队列 事实上 如果您想要的是一个基本且易于使用的 fifo 队列 slice 可以满足您所
  • Laravel 异常队列最大尝试次数超出

    我创建了一个应用程序来向多个用户发送电子邮件 但在处理大量收件人时遇到问题 该错误出现在failed jobs table Illuminate Queue MaxAttemptsExceededException App Jobs ESe
  • ArrayDeque 和 LinkedBlockingDeque

    只是想知道为什么他们做了一个LinkedBlockingDeque而同一个非并发对应物是ArrayDeque它基于可调整大小的数组 LinkedBlockingQueue使用一组节点 例如LinkedList 尽管没有实施List 我知道可
  • queue.js 是如何工作的?

    我一直试图理解如何Mike Bostock 的queue js https github com mbostock queue blob master queue js有效 但我看不出它是如何工作的 我不明白的部分是代码如何设法继续执行回调

随机推荐

  • 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步骤