515. 在每个树行中找最大值

515. 在每个树行中找最大值

给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。

示例1:

515. 在每个树行中找最大值

输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]
示例2:

输入: root = [1,2,3]
输出: [1,3]

二叉树的搜索无非就是DFS或者BFS,通常DFS用的比较多,这道题两个方法都可以,但是题目要求找到每一层的最大值,所以个人觉得层序遍历比较清晰,当然深度优先使用一个变量记录当前层数也可以完成这个任务。

DFS
递归遍历二叉树,每次进入下一层使层数加一,维护当前层数的最大值。

BFS
广度优先搜索,按模板写就行,在一层内维护一个最大值,遍历完一层后加入结果。
贴一个BFS:

class Solution {
    public List largestValues(TreeNode root) {
        if (root == null) {
            return new ArrayList();
        }
        Deque queue = new LinkedList<>();
        queue.offer(root);
        List res = new ArrayList<>();
        while (!queue.isEmpty()) {
            int len = queue.size();
            int max = Integer.MIN_VALUE;
            for (int i = 0; i < len; i++) {
                TreeNode node = queue.poll();
                max = Math.max(max, node.val);
                if (node.left != null) {
                    queue.offer(node.left);
                }
                if (node.right != null) {
                    queue.offer(node.right);
                }
            }
            res.add(max);
        }
        return res;
    }
}

原文:https://leetcode.cn/problems/find-largest-value-in-each-tree-row/solution/by-nice-hermann9a2-nnrq/

Original: https://www.cnblogs.com/liangren-na/p/16437673.html
Author: 良人呐
Title: 515. 在每个树行中找最大值

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/619843/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 设计模式遵循的设计原则

    一、什么是设计原则? 答:如果说设计模式是编写代码的一种套路,那么设计原则就是用来约束我们使用这种套路应该要遵循的规则,只有遵循了这些规则的设计模式编写出来的应用程序才具有更好的扩…

    数据库 2023年6月14日
    081
  • 【Kubernetes系列】Kubernetes介绍以及架构

    文章目录 简介 应用部署历程 * 传统部署时代 虚拟化部署时代 容器部署时代 Kubernetes的用途 Kubernetes设计理念 Kubernetes架构设计原则 Kuber…

    数据库 2023年6月6日
    0100
  • 微服务架构设计模式

    内容简介 成功地开发基于微服务架构的应用软件,需要掌握一系列全新的架构思想和实践。在这本书籍中解释了 44 个架构设计模式,这些模式用来解决诸如服务拆分、事务管理、查询和跨服务通信…

    数据库 2023年6月6日
    0140
  • SNMP windows OIDs

    Windows OID’ for CPU, Memory, Disk Utilization2007-10-31 11:03Windows CPU Utilizatio…

    数据库 2023年6月11日
    096
  • flowable 从zip压缩包 部署流程定义

    /**部署流程定义(从zip压缩包) * @param name //部署名称 * @param zippath //zip文件路径 * @return 部署ID * @from …

    数据库 2023年6月6日
    087
  • 基于 ZooKeeper 的分布式锁实现

    ZK 基本概念 apache hadoop 下面的子项目,是一个树形目录服务 字面意思就是动物管理员,诞生之初用来管理 hadoop(大象)、Hive(蜜蜂)、Pig(小猪) 用于…

    数据库 2023年6月6日
    084
  • 5000+字硬核干货!Redis 分布式集群部署实战

    原理: Redis集群采用一致性哈希槽的方式将集群中每个主节点都分配一定的哈希槽,对写入的数据进行哈希后分配到某个主节点进行存储。 集群使用公式(CRC16 key)& 1…

    数据库 2023年6月9日
    093
  • Github 星标 8K+ 这款国人开源的 Redis 可视化管理工具,真香…

    做程序员就少不了与一些工具打交道,比如:监控工具、管理工具等,有些工具是命令行界面,有些工具是可视化界面,反正都是可以能够满足日常使用的功能需求。 对于redis管理工具来说,也有…

    数据库 2023年6月9日
    0112
  • 数据结构堆

    引用 [](https://zh.wikipedia.org/wiki/%E5%A0%86%E7%A9%8D “维基百科堆结构”) [堆结构](https:…

    数据库 2023年6月9日
    090
  • SQL语句的整合

    基础语法 https://blog.csdn.net/m0_37989980/article/details/103413942 CRUD 提供给数据库管理员的基本操作,CRUD(…

    数据库 2023年5月24日
    0100
  • mysql配置环境变量

    安装MySQL 5.6,0.28 官网下载解压即可 下载后解压 然后以管理身份打开 my.ini配置(得先配置) bin>mysqld –initialize-i…

    数据库 2023年6月9日
    087
  • MySQL 批量修改库、表、列的排序规则

    1.表字段修复 SELECT TABLE_SCHEMA ‘数据库’, TABLE_NAME ‘表’, COLUMN_NAME ‘字段’, CHARACTER_SET_NAME ‘原…

    数据库 2023年6月14日
    0103
  • 省去跨表联查与注释查询的存储过程

    1 — 打印query存储过程的帮助信…

    数据库 2023年5月24日
    067
  • 使用 LOAD DATA LOCAL INFILE,sysbench 导数速度提升30%

    最近给 sysbench 提了一个 feature(https://github.com/akopytov/sysbench/pull/450),支持通过 LOAD DATA LO…

    数据库 2023年5月24日
    0149
  • 设计模式之(12)——外观模式

    外观模式(facadePattern)又叫门面模式,隐藏了子系统的复杂实现,为子系统中的一组接口提供了一个统一的访问入口,使得子系统容易被访问或使用,说白了就是把复杂的子系统封装成…

    数据库 2023年6月14日
    082
  • JVM

    JVM 一、什么是JVM 定义 Java Virtual Machine,JAVA程序的运行环境(JAVA二进制字节码的运行环境) 好处 一次编写,到处运行 自动内存管理,垃圾回收…

    数据库 2023年6月16日
    055
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球