LeetCode # 199. 二叉树的右视图

news2024/9/23 9:27:30

199. 二叉树的右视图

题目

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例 1:
在这里插入图片描述

输入: [1,2,3,null,5,null,4]
输出: [1,3,4]

示例 2:

输入: [1,null,3]
输出: [1,3]

示例 3:

输入: []
输出: []

分析

树的层序遍历,判断遍历到最右侧时,加入结果中

题解

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        // 广度优先,层序遍历

        List<Integer> list = new ArrayList<>();
        // list.add(root.val);

        if(root == null){
            return list;
        }

        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);

        

        // 不能用queue是否为空来判断这一层有没有遍历完,因为父节点的左子树下面有节点时,queue会被重新填充,等到父节点的右子树判断时已经不准确了,所以要在这一层遍历之前获取层的数量
        while(!queue.isEmpty()){

            Integer size = queue.size();

            for(int i = 0; i < size; i++){

                TreeNode node = queue.poll();

                if(node.left != null){
                    queue.add(node.left);
                }
                if(node.right != null){
                    queue.add(node.right);
                }
                // 利用size判断这层后面还有没有,没有就加入结果中
                if(i == size - 1){
                    list.add(node.val);
                }
            }
        }
        return list;
    }
}

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

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

相关文章

Flink入门知识点汇总(二)

具体内容请看b站尚硅谷课程&#xff01; 32_Flink运行时架构_提交流程_Yarn应用模式_哔哩哔哩_bilibili 窗口 Flink的窗口并不是静态准备好的&#xff0c;而是动态创建的。数据流到达时不会准备24个或者其他完整数量的桶&#xff0c;而是当下桶接满了&#xff0c;才临时又拿新…

ClickHouse01-什么是ClickHouse

什么是ClickHouse&#xff1f; 关于发展历史存在的优势与劣势什么是它风靡的原因&#xff1f; 什么是ClickHouse&#xff1f; 官方给出的回答是&#xff0c;它是一个高性能、列式存储、基于SQL、供在线分析处理的数据库管理系统 当然这边不得不提到OLAP(Online Analytical Pr…

Nginx 的安装、启动和关闭

文章目录 一、背景说明二、Nginx 的安装2.1、依赖的安装2.2、Nginx 安装2.3、验证安装 三、启动 Nginx3.1、普通启动3.2、如何判断nginx已启动3.3、通过配置启动3.4、设置开机启动 四、关闭 Nginx4.1、优雅地关闭4.2、快速关闭4.3、只关闭主进程4.4、使用nginx关闭服务 五、重启…

IP SSL证书注册流程

使用IP地址申请SSL证书&#xff0c;需要用公网IP地址申请&#xff0c;申请之前确保直接的IP地址可以开放80或者443端口两者选择1个就好&#xff0c;端口不需要一直开放&#xff0c;只要认证的几分钟内开放就可以了&#xff0c;然后IP地址根目录可以上传txt文件。 IP SSL证书认…

【最后2天】京东云游戏云服务器0门槛抽奖送!云服务器选购推荐 京东云 阿里云 腾讯云对比 幻兽帕鲁 雾锁王国 省钱学生党

好消息&#xff1a;抽奖活动开启&#xff01;时间&#xff1a;3月17日——3月24日 最高奖品&#xff1a;16G 6个月&#xff1b;32G 3个月 抽奖规则&#xff1a;B站点赞评论关注即可参与抽奖&#xff0c;3.24日公布获奖名单。 抽奖地址&#xff1a; 【首次抽奖】16G、32G免费…

EKMA曲线及大气O3来源解析技术应用

目前&#xff0c;大气臭氧污染成为我国“十四五”期间亟待解决的环境问题。臭氧污染不仅对气候有重要影响&#xff0c;而且对人体健康、植物生长均有严重损害。为了高效、精准地治理区域大气臭氧污染&#xff0c;首先需要了解导致臭氧生成的主要前体物。因此&#xff0c;EKMA曲…

LeetCode:2617. 网格图中最少访问的格子数(优先级队列 Java)

目录 2617. 网格图中最少访问的格子数 题目描述&#xff1a; 实现代码与解析&#xff1a; 优先级队列 原理思路&#xff1a; 2617. 网格图中最少访问的格子数 题目描述&#xff1a; 给你一个下标从 0 开始的 m x n 整数矩阵 grid 。你一开始的位置在 左上角 格子 (0, 0) 。…

鸿蒙一次开发,多端部署(六)自适应布局

针对常见的开发场景&#xff0c;方舟开发框架提炼了七种自适应布局能力&#xff0c;这些布局可以独立使用&#xff0c;也可多种布局叠加使用。 下面我们依次介绍这几种自适应布局能力。 拉伸能力 拉伸能力是指容器组件尺寸发生变化时&#xff0c;增加或减小的空间全部分配给容…

【Winform学习笔记(十一)】解决无边框窗体最大化显示异常问题

解决无边框窗体最大化显示异常问题 前言正文1、防止改变窗口大小时控件闪烁2、FrmMain_SizeChanged 前言 Winform 无边框窗体的设计&#xff0c;旨在为用户提供更加独特和个性化的界面体验&#xff0c;但是在实现这一设计的过程中&#xff0c;最大化显示异常问题往往成为开发者…

关于5.x版本的Neo4j与py2neo的访问技巧

先说结果。 Neo4j是可以使用py2neo来操作的。而且网上搜到的教程和方法里&#xff0c;首推的http连接方法可能并不是最好的&#xff0c;应该用 bolt 方法可能更好。 对于大多数使用 py2neo 与 Neo4j 数据库进行交互的应用程序来说&#xff0c;建议使用 Bolt 协议&#xff08;即…

谷歌DeepMind推出3D游戏AI代理SIMA,实现自然语言操控游戏新纪元

近日&#xff0c;谷歌DeepMind研究团队推出了一款名为SIMA的创新AI代理&#xff0c;专为3D游戏环境设计。这款代理独树一帜&#xff0c;无需访问游戏源代码或依赖定制API&#xff0c;仅通过输入图像和简单的自然语言文本指令&#xff0c;便能实现与人类玩家相当的游戏操作。 AI…

Django数据库查询

聚合查询 分组查询 F与Q查询 默认情况下,用Q包裹的两个条件,用逗号分割也是and关系 choices参数 只要某个字段的可能性是完全可以列举出来的,可以采取choices参数 该gender字段存的还是数字,但是如果数字在上面的元组列举范围内,该怎么获取对应的值,如果不在范围内,会怎…

springboot网站开发解决图片存储问题,前端无法访问解决办法

最近使用springboot开发网站的时候&#xff0c;遇到了一个图片存储问题&#xff0c;我之前的方法是&#xff0c;把证书图片存在项目的static目录下面&#xff0c;这样的话&#xff0c;打包发布到远程服务器后&#xff0c;虽然可以正常展示已经打包封装好的内容&#xff0c;但是…

【Java】Java程序员必备的一些流程图

一、spring的生命周期 Spring作为当前Java最流行、最强大的轻量级容器框架&#xff0c;了解熟悉spring的生命周期非常有必要&#xff1b; 首先容器启动后&#xff0c;对bean进行初始化按照bean的定义&#xff0c;注入属性检测该对象是否实现了xxxAware接口&#xff0c;并将相…

浙江IGM机器人K5控制柜维修需要注意哪些问题?

IGM机器人K5控制柜常见故障及维修方法 1、电源故障&#xff1a; 表现为IGM机器人K5控制柜不能开机或突然断电。 检查&#xff1a;检查电源线是否连接良好&#xff0c;有无破损&#xff1b;检查电源模块的输出电压是否正常&#xff1b; 维修方法&#xff1a;如电源模块损坏&…

蓝桥杯-模拟-旋转图片

题目 思路 Python中range() 函数的使用介绍_python指定范围内的整数-CSDN博客 range(start, stop, step)&#xff1a;生成一个序列包含start到stop-1的整数&#xff0c;其中步长为step 代码 n, m map(int, input().split()) a [list(map(int, input().split())) for _ in…

2024年Jira全面解析:从 Jira 的概念到优缺点、最新政策

Jira是澳大利亚的Atlassian公司开发的一款项目管理软件&#xff0c;名字来源于日文中“哥斯拉”的称呼“Gojira”。Jira不仅可以追踪缺陷和问题&#xff0c;还能管理项目。很多企业还将JIRA用于一些特殊的场景&#xff0c;比如作为仓库自动化工具、管理文档流程、优化费用等等。…

34 | 到底可不可以使用join?

在实际生产中&#xff0c;关于 join 语句使用的问题&#xff0c;一般会集中在以下两类&#xff1a; 1. 我们 DBA 不让使用 join&#xff0c;使用 join 有什么问题呢&#xff1f; 2. 如果有两个大小不同的表做 join&#xff0c;应该用哪个表做驱动表呢&#xff1f; 今天这篇文…

实型数据详解

1 实型常量的表示方法 实数(real number)又称浮点数(floating-point number)。实数有两种表示形式: (1)十进制小数形式。它由数字和小数点组成(注意必须有小数点)。.123、123.、123.0、0.0都是十进制小数形式。 (2)指数形式。如123e3或123E3都代表123x103。但注意字母e(或E)…