Leetcode 199. 二叉树的右视图

Java实现 LeetCode 199 二叉树的右视图 199. 二叉树的右视图 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 <--- \ \ 5 4 <--- PS: ... 阅读详情

题目

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-right-side-view
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解答

解法一:递归 + dfs

深搜,优先搜索右子树。只将同一层内按此规则 第一个 遍历到的结点加入结果集。

代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        rightSideView(root, 0, res);
        return res;
    }
    
    private void rightSideView(TreeNode node, int depth, List<Integer> res) {
        if(node == null) return;
        
        if(depth == res.size()) {
            res.add(node.val);
        }
        
        rightSideView(node.right, depth + 1, res);
        rightSideView(node.left, depth + 1, res);
    }
}
结果

在这里插入图片描述

解法二:层序 + bfs

二叉树广度优先搜索的一个简单的变种题。

当遍历到某一层:只保留当前层级的最后一个结点。

代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        if(root == null) return new ArrayList<>();
        
        List<Integer> res = new ArrayList<>();
        LinkedList<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while(!queue.isEmpty()) {
            int size = queue.size();
            while(size -- > 0) {
                TreeNode node = queue.poll();
                if(size == 0) res.add(node.val);   
                
                if(node.left != null) {
                    queue.offer(node.left);
                }
                
                if(node.right != null) {
                    queue.offer(node.right);
                }
            }
        }

        return res;
    }
}
结果

在这里插入图片描述

LeetCode 199 二叉树的右视图 在解决 LeetCode 199 二叉树的右视图(Binary Tree Right Side View)问题时,我们需要找到从二叉树右侧看见的节点值(即每一层中最靠右的节点值)。以下是多种解法、对应模板及变体问题的讨论。 阅读详情

相关推荐

【中等】力扣算法题解析LeetCode199:二叉树的右视图

题目要求返回二叉树从右侧视角能看到的节点值,即每层的最右节点。通过层次遍历(BFS)逐层处理节点,记录每层最后一个节点的值即可解决。算法时间复杂度为O(N),空间复杂度为O(N)。Java代码使用队列实现BFS,在遍历时判断是否为当前层末尾节点,将其值加入结果列表。示例验证了算法的正确性,如输入[1,2,3,null,5,null,4]输出[1,3,4]。

ylumwd的博客 417

leetcode 199. 二叉树的右视图 (JAVA)

题目描述: 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 本题核心思想就是遍历二叉树,取得每一层最右边的第一个节点值。 关键点在于有几种遍历方法呢? 第一种: 广度优先搜索(BFS遍历方法) class Solution { public List<Integer> rightSideView(TreeNode root) { //res去储存最后输出的结果 List<Integer> r

迪文的博客 1037

机器学习发展历史及现状(重要的期刊,会议,大牛总结)

1 引言 机器学习是指通过计算机学习数据中的内在规律性信息,获得新的经验和知识,以提高计算机的智能性,使计算机能够像人那样去决策。随着各行业对数据的需求量增多,对处理和分析数据的效率要求变高,一系列机器学习算法应运而生。机器学习算法主要是指通过数学及统计方法求解最优化问题的步骤和过程。针对不同的数据和不同模型需求,选择和使用适当的的机器学习算法可以更高效地解决一些实际问题。本文将从机器学习的起源...

Oscar2018的博客 5万+

【算法】Java-二叉树的右视图(BFS、DFS两种解法)

这道题的解法有很多,分享这两种解法的原因是在做这道题时,我感受到了自己的一点点质变。方法一,对队列的熟练应用。方法二,深度理解了递归的过程,后面还要继续应用,继续体会。学习算法增加了我看问题的视角,经常感叹“原来可以这样”,“居然还能这样”,“这人想的真好”之类。但我们知道“知道”和“做到”之间,有一条“鸿沟”,用新的“知道”的方法解出题的感觉真是太棒了,我做到了!当然,过程非常不容易,经常有些题目都看不懂,或者别人的思路理解不了。这时候,我们要想想,这道题难度是不是太大了,如果太大,要降低难度;

软件工程探索之旅 1713

反无人机技术实战解析:从探测到拦截的全方位防御策略

本文深入解析了反无人机(C-UAS)技术的全链条防御策略。从雷达、无线电频谱、光电等多维度探测技术,到数据融合与威胁评估,再到无线电干扰、导航诱骗及物理拦截等核心拦截手段,系统阐述了如何构建从探测到拦截的实战化防御体系,为关键设施、大型活动等场景提供定制化空域安全解决方案。

weixin_29230649的博客 401

实战复盘:如何用Frida脚本绕过某书APP的libmsaoaidsec.so检测(附完整Hook代码)

本文深入探讨了如何利用Frida脚本绕过某书APP通过libmsaoaidsec.so实现的反Frida检测机制。通过分析动态链接过程中的关键节点和检测模式,提供了两种实战验证的绕过方案:动态Hook关键链接器函数和静态Patch SO文件。文章还分享了进阶对抗策略和调试技巧,帮助安全研究人员有效应对现代移动安全防护挑战。

weixin_42706667的博客 215

LeetCode#199 二叉树的右视图 Java

@author: sdubrz @date: 2020.04.22 题号: 199 题目难度: 中等 考察内容: 树 原题链接 https://leetcode-cn.com/problems/binary-tree-right-side-view/ 题目及官方解法的著作权归领扣网络所有,商业转载请联系官方授权,非商业转载请注明出处。 解题代码转载请联系 lwyz521604#163.com 给...

仰起脸笑得像满月 857

Facebook登录协议逆向实战:从加密参数到完整流程解析(附Python代码)

本文深入解析Facebook登录协议的逆向工程,重点拆解`lgndim`和`encpass`等加密参数的生成逻辑,并提供完整的Python实现代码。通过Base64解码和RSA加密技术,帮助开发者理解并实现Facebook登录流程,同时涵盖工程优化与安全实践。

weixin_30687051的博客 476

剑指 Offer II 046. 二叉树的右侧视图

力扣打卡:剑指 Offer II 046. 二叉树的右侧视图 解题思路 经典的二叉树的层序框架 在遍历框架时,当发现了 i==size-1,那么将节点的 val加入 ans中 if(root==null) return 0; Queue<TreeNode> que = new LinkedList<>(); que.offer(root); while(!que.isEmpty()){ int size = que.size(); // 此时记录每一层的节点个数

一抹阳光&的博客 402

华为OD机试新系统真题【终端设备档位差异统计】

华为OD机试 新系统真题【终端设备档位差异统计】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【终端设备档位差异统计】多语言题解。

qq_45776114的博客 781

大模型——Coze工作流实战:一键生成像素风格视频

本文介绍了如何利用Coze平台工作流生成像素风格心理学短视频的方法。通过创建工作流、设置变量节点、调用大模型生成文案、数据格式化处理、合成音频、生成字幕等步骤,最终实现从输入主题到生成完整视频的自动化流程。文章详细展示了每个节点的具体配置方法,包括提示词编写和数据处理脚本,为读者提供了完整的像素风格视频制作解决方案。

817

LeetCode199之二叉树的右视图(二叉树的深度遍历和广度遍历)

这题如果没有接触过二叉树的深度遍历和广度遍历其实是很难自己做出来的

数据与算法架构提升之路专栏 749

uni-app - 刘海屏(Iphone X)底部横杠(——)白色区域块(安全距离处更改颜色)解决方案

场景:因为要做无tabbar页面,所以在配置文件中取消底部导航栏。取消后,iPhoneX(刘海屏)底部就出现如下图所示白色安全区域问题:这个问题,是因为uni-app默认会为iPhoneX(刘海屏)留出安全距离,这个安全距离的背景色就是白色。所以,如果你将页面颜色设置为其他颜色,就会与默认白色冲突。有2个不同的解决方案(原生占位),虽然原理是一样,但使用的场景不同,请根据您的需求来采纳。

🏆 前端领域优质创作者 1万+

力扣Leetcode 199. 二叉树的右视图

199. 二叉树的右视图 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 <--- \ \ 5 4 <--- ???? 思...

CoderZ's blog 370

静态时序分析—set_sense

set_sense 常见用法

m0_61544122的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Leetcode力扣第199题——二叉树的右视图

题目描述 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 <--- \ \ 5 4 <--- BFS(广度优先搜索)...

a624193873的博客 798

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LeetCode:199 二叉树右视图 层次遍历解法

LeetCode:199 二叉树右视图 层次遍历解法 【传送门】 题目描述 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-ri...

AKGWSB 's blog 264

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

199. 二叉树的右视图【 力扣(LeetCode) 】

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

yyh520025的博客 976

LeetCode第199题_二叉树的右视图

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

qq_40263592的博客 1560

LeetCode 199.二叉树的右视图

LeetCode 199.二叉树的右视图 题目描述: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1, 2 , 3, null , 5 , null ,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 &lt...

qq_40751552的博客 337

力扣第199题“二叉树的右视图”

本文详细解读了力扣第199题“二叉树的右视图”,通过使用广度优先搜索(BFS)和深度优先搜索(DFS)高效地解决了这一问题,并提供了详细的解释和模拟面试问答。希望读者通过本文的学习,能够在力扣刷题的过程中更加得心应手。

10年数据\经营分析经验,现任大厂数据分析负责人 1170

Leetcode199 二叉树的右视图 - JAVA

题目传送门 Leetcode.199 二叉树的右视图 - JAVA题目解法BFS 解法思路代码 题目 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 <--- ...

小小柯 397

LeetCode199 二叉树的右视图

LeetCode199 二叉树的右视图 题目链接 这道题是一道关于二叉树的题,解题方法主要是 dfs 和 bfs 。 首先,我们回顾一下二叉树的基本知识。 前序遍历:根左右 中序遍历:左根右 后序遍历:左右根 案例链接1 案例链接2 ...

qq_29453229的博客 220

二叉树的右视图 力扣199

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

qq_65031432的博客 484

LeetCode第199题二叉树的右视图

199. 二叉树的右视图 题目: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <— / 2 3 <— \ 5 4 <— 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-right-si

qq_41967623的博客 402

LeetCode做题记录—LeetCode199:二叉树的右视图—JAVA语言实现

LeetCode199:二叉树的右视图 题目描述: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 代码实现 方案一: 通过深度优先搜索,按照根 - > 右 - > 左的遍历方式,保证对于每一层而言能先访问到其最右侧的节点。同时设立变量max_dept...

J_York的博客 368
上一篇: Leetcode 173. 二叉搜索树迭代器
下一篇: Leetcode 222. 完全二叉树的节点个数
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值