力扣---二叉树的右视图

news2025/1/13 2:49:47

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

示例 1:

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

示例 2:

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

示例 3:

输入: []
输出: []

实现方法:

    1.使用递归函数,传递当前节点和当前的深度。
    2.检查当前深度是否已经在结果列表中有对应的值,如果没有,则添加当前节点值(这意味着这是该层级首次访问到的节点,从右边看过去首先看到的节点)。
    3.优先递归访问右子节点,然后是左子节点,这样可以保证右侧节点优先被处理。

作者:GoAhead
链接:. - 力扣(LeetCode)
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<int> res;
    int depth = 0;
    vector<int> rightSideView(TreeNode* root) {
        dfs(root,depth);
        return res;
    }
    void dfs(TreeNode * root , int depth) { 
// 如果当前节点所在深度还没有出现在res里,说明在该深度下当前节点是第一个被访问的节点,因此将当前节点加入res中。
        if (root == nullptr){
            return;
        }
        if (depth == res.size()){
            res.push_back(root->val);
        }
        depth++;// 先访问 当前节点,再递归地访问 右子树 和 左子树。
        dfs(root->right,depth);
        dfs(root->left,depth);
    }
};

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

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

相关文章

双非本科自述: 无竞赛国奖,怎么逆袭腾讯字节

写在前面 大家好&#xff0c;我是青玉白露。 在这个充斥着精英主义色彩的社会里&#xff0c;"双一流"大学和耀眼奖项似乎成了走向职业成功、大厂的不二法门及必备之物。 然而&#xff0c;今天我要分享的&#xff0c;是一个打破常规的故事&#xff0c;是一个关于普…

AQS共享模式之CyclicBarrier

概念&#xff1a;CyclicBarrier翻译为循环(屏障/栅栏)&#xff0c;当一组线程到达一个屏障&#xff08;同步点&#xff09;时被阻塞&#xff0c;直到最后一个线程到达屏障时&#xff0c;屏障才会打开&#xff0c;所有被屏障拦截的线程才会继续工作。 设计目的&#xff1a;和Co…

什么牌子的洗地机质量比较好?四大热门品牌实测,快看过来

随着科技的发展&#xff0c;各种智能家居产品层出不穷&#xff0c;为我们的生活带来了诸多便利。近年来&#xff0c;在家庭清洁领域&#xff0c;洗地机成为了热门选择&#xff0c;可是什么牌子的洗地机质量比较好呢&#xff1f;我们一起来看看吧。 洗地机选购技巧&#xff1a;…

大数据中的项目数据采集

Datax介绍 官网&#xff1a; DataX/introduction.md at master alibaba/DataX GitHub DataX 是阿里云 DataWorks数据集成 的开源版本&#xff0c;在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。 DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS…

【漏洞复现】若依druid 未授权访问漏洞

0x01 产品简介 若依&#xff08;Ruoyi&#xff09;框架是一款基于Spring Boot、Spring Cloud、OAuth2与JWT鉴权等核心技术的快速开发平台。它支持多种安全框架和持久化框架&#xff0c;并采用前后端分离的模式进行开发&#xff0c;具备高度的灵活性和可扩展性。若依框架提供了…

VTK 的可视化方法:颜色映射

VTK 的可视化方法&#xff1a;颜色映射 VTK 的可视化方法&#xff1a;颜色映射颜色映射过程vtkDataSetvtkDataSetAttributesvtkLookUpTablevtkScalarBarActor实例参考 VTK 的可视化方法&#xff1a;颜色映射 颜色映射的操作对象是数据集中的标量属性。它是一种常用的标量算法。…

.net core ef 连表查询

Information和TypeInfo连表查询 类似&#xff1a; select st.Title1,si.* from [Star_Information] si left join Star_TypeInfo st on si.typeId2st.id 先在EfCoreDbContext.cs配置 protected override void OnModelCreating(ModelBuilder builder){base.OnModelCreating(b…

C++数据结构——二叉搜索树

二叉搜索树的概念 二叉树又称二叉排序树(BST&#xff0c;Binary Search Tree)&#xff0c;它是一颗空树&#xff0c;也可以是一颗具有下列性质的二叉树&#xff1a; 1.假如它的左子树不为空&#xff0c;那么左子树上的结点值都小于根结点的值。 2.假如它的右子树不为空&…

K8S controller编写之Informer的原理+使用[drift]

概念 核心思想&#xff08;重点&#xff09;watch-list 机制 Watch 通过 HTTP 协议与 Kubernetes API Server 建立长连接&#xff0c;接收 Kubernetes API Server 发来的资源变更事件。Watch 操作的实现机制使用 HTTP 协议的分块传输编码——当 client-go 调用 Kubernetes API…

nacos(docker部署)+springboot集成

文章目录 说明零nacos容器部署初始化配置高级配置部分访问权限控制命名空间设置新建配置文件 springboot配置nacos添加依赖编写测试controller 说明 nacos容器部署采用1Panel运维面板&#xff0c;进行部署操作&#xff0c;简化操作注意提前安装好1Panel和配置完成docker镜像加…

三、VUE数据代理

一、初识VUE 二、再识VUE-MVVM 三、VUE数据代理 Object.defineProperty() Object.defineProperty() 静态方法会直接在一个对象上定义一个新属性&#xff0c;或修改其现有属性&#xff0c;并返回此对象。 Object.defineProperty() 数据代理 通过一个对象代理另一个对象中属…

CSS 06

精灵图 为什么要使用精灵图 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度,因此&#xff0c;为了有效地减少服务…

Python来计算 1,2,3,4 能组成多少个不相同且不重复的三位数?

我们今天的例子是 有 1&#xff0c;2&#xff0c;3&#xff0c;4 四个数字&#xff0c;它们能组成多省个互不相同且无重复的三位数&#xff1f;都分别是多少&#xff1f; 话不多说&#xff0c;我们先上代码 num 0 # 我们写了三个for循环&#xff0c;表示生成的三位数 for i…

YOLOv5模型训练处理自己数据集(标签统计、数据集划分、数据增强)

上一节中我们讲到如何使用Labelimg工具标注自己的数据集&#xff0c;链接&#xff1a;YOLOv5利用Labelimg标注自己数据集&#xff0c;完成1658张数据集的预处理&#xff0c;接下来将进一步处理这批数据&#xff0c;通常是先划分再做数据增强。 目录 一、统计txt文件各标签类型…

在项目中添加日志功能-Python logging模块新手入门

Python Logging 日志模块新手入门 这也是规划里的一篇工具文章&#xff0c;在写项目代码的时候不但要考虑代码的架构代码的后期维护和调试等也是一个比较关键的问题&#xff0c;之前写代码的时候日志这块的代码直接是任务驱动简单搜了一下就用了&#xff0c;但是秉持着打好基础…

十八、Java解析XML文件

1、XML文档语法和DTD约束 1)XML定义 XML即可扩展的标记语言,可以定义语义标记(标签),是元标记语言。XML不像超文本标记语言HTML,HTML只能使用规定的标记,对于XML,用户可以定义自己需要的标记。 XML(Extensible Markup Language)和HTML(Hyper Text Markup Language)师出同…

智能体可靠性的革命性提升,揭秘知识工程领域的参考架构新篇章

引言&#xff1a;知识工程的演变与重要性 知识工程&#xff08;Knowledge Engineering&#xff0c;KE&#xff09;是一个涉及激发、捕获、概念化和形式化知识以用于信息系统的过程。自计算机科学和人工智能&#xff08;AI&#xff09;历史以来&#xff0c;知识工程的工作流程因…

救护员证学习笔记

第一节 红十字运动基础知识 红十字运动的优势 197个主权国家、191个红十字会 四次获得诺贝尔和平奖 红十字运动的组成 红十字运动七项准则 红十字运动的标志 新中国红十字运动宗旨 保护人的生命与健康 维护人的尊严 发扬人道主义精神 促进和平事业进步 红十字会的主要工作 …

VGG16简单部署(使用自己的数据集)

一.注意事项 1.本文主要是引用大佬的文章&#xff08;侵权请联系&#xff0c;马上删除&#xff09;&#xff0c;做的工作为简单补充 二.介绍 ①简介&#xff1a;VGG16是一种卷积神经网络模型&#xff0c;由牛津大学视觉几何组&#xff08;Visual Geometry Group&#xff09;开…

【错题集-编程题】组队竞赛(排序 + 贪心)

牛客对应题目链接&#xff1a;组队竞赛_牛客笔试题_牛客网 (nowcoder.com) 一、分析题目 运用 贪心 思想&#xff1a; 先将数组排好序。总和最大 -> 每个小组的分数尽可能大。最大的数拿不到&#xff0c;只能退而求其次拿到倒数第⼆个⼈的分数&#xff0c;再补上一个小的数…