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

 看到这个题目的一瞬间,我想递归,必须用递归。最近被递归折磨的有点狠,但是我感觉我快要打败它了,就是现在稍稍有点处于劣势。不过没关系,来日方长不是。

 法一:递归

题解:

之前想的就是先递归,遍历其右子树,然后将返回的值放到一个栈里面,最后输出栈中的值就可以了,但是后面发现其实没有必要用到栈,只要自己在每一次调用本身之前将之前的值放到一维数组中就可以了。像下面这样!

 法二:DFS深度遍历

首先我我知道这个看起来很简单,我也能看懂官方的解答,但是对于读代码的能力还是得有待加强。具体就是我一直觉得depth是结点的个数,然后自己就很努力的在那证明官方的解答是错误的,后来啊~我错了。哈哈哈哈哈。所以depth的值是层数,代码中也并没有很明显的表示depth=多少对吧,眼瞎啊!!!

/**
 * 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> rightSideView(TreeNode* root) {
        unordered_map<int,int> rightmostValueDepth;  //定义一个哈希表,用以表示层数和值的对应关系
        int max_depth=-1;
        stack<TreeNode*>nodeStack;  //用以存储结点的栈
        stack<int> depthStack; //用以存储个数 的栈
        nodeStack.push(root);
        depthStack.push(0);
        while(!nodeStack.empty()){
            //取出此时栈顶元素
            TreeNode *node=nodeStack.top();
            nodeStack.pop();
            //取出此时树的层数
            int depth=depthStack.top();
            cout<<depth;
            depthStack.pop();
            if(node!=NULL){
                max_depth=max(max_depth,depth);
                if(rightmostValueDepth.find(depth)==rightmostValueDepth.end()){
                rightmostValueDepth[depth]=node->val;
            }
            nodeStack.push(node->left);
            nodeStack.push(node->right);
            depthStack.push(depth+1);
            depthStack.push(depth+1);
            }
        
        }
        vector<int> rightView;
        for(int depth=0;depth<=max_depth;depth++){
            rightView.push_back(rightmostValueDepth[depth]);
        }
        return rightView;
    }
};

最后就是也可以用BFS算法,只要把栈换成队列,嗯,差不多了。

今天,我觉得自己的脑子好像一个破烂的水桶,不每天都修修补补的话(我的意思是复习),就还会是原来那样。温故而知新啊~

天天开心哦~

请你喝碗鸡汤

“你要忍,忍到春暖花开;你要走,走到灯火通明;你要看过世界辽阔,再评判是好是坏;你要卯足变好,再旗鼓相当站在不敢想的人身边;你要变成想象中的样子,这件事,一步都不能让”

                                                                                                                                ——卢思浩        

加油哦~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python:改进型鳟海鞘算法(SSALEO)求解23个基本函数

一、改进型鳟海鞘算法SSALEO 改进型鳟海鞘算法&#xff08;SSALEO&#xff09;由Mohammed Qaraad等人于2022年提出。 参考文献&#xff1a;M. Qaraad, S. Amjad, N. K. Hussein, S. Mirjalili, N. B. Halima and M. A. Elhosseini, "Comparing SSALEO as a Scalable Larg…

50个免费的 AI 工具,提升工作效率(附网址)

上次我们已经介绍了20个精选的提高工作效率的免费AI工具&#xff0c;但如果你觉得这些AI工具还不过瘾的话&#xff0c;想进一步成为职场中最了解AI的人&#xff0c;本文将汇总介绍免费最新的50个AI工具。 DeepSwap DeepSwap 是一个基于 AI 的工具&#xff0c;适用于想要制作令人…

Kafka生产环境问题总结与性能优化实践

Kafka可视化管理工具kafka-manager 安装及基本使用可参考: httos://wwwcnbloas.com/dadonaaa/o/8205302.html 线上环境规划 1. 消息丢失情况: 消

【MATLAB库函数系列】线性调频Z(Chirp-Z,CZT)的MATLAB源码和C语言实现

在上一篇博客 【数字信号处理】线性调频Z(Chirp-Z,CZT)算法详解 已经详细介绍了CZT变换的应用背景和原理,先回顾一下: 回顾CZT算法 采用 FFT 算法可以很快计算出全部 N N N点 DFT 值,即Z变换 X ( z ) X(z) <

LaTex插入图片、插入表格、插入公式

目录 一、插入图片 1&#xff09;改变图片的大小、旋转图片 2&#xff09;标签和交叉引用 3&#xff09;插入单排多图无小标题共享大标题 4&#xff09;单排变多排 5&#xff09;图片的位置 6&#xff09;图片横跨双栏 二、插入表格 1&#xff09;合并单元格 2&#…

RHCE9学习指南 第9章 权限管理

9.1 所有者所属组 为了了解所有者和所属组的概念&#xff0c;我们先看图9-1。 图9-1 用房子来帮助理解所有者和所属组 张老板是公司老板&#xff0c;买了一套房作为员工宿舍给A部门的员工居住。张老板是房主&#xff0c;所以他对房子具有很多权限&#xff0c;A部门员工只能具…

【开源】基于JAVA语言的大学生相亲网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询会员4.2 查询相亲大会4.3 新增留言4.4 查询新闻4.5 新增新闻 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的大学生相亲网站&#xff0c;包含了会员管理模块、新闻管…

k8s实战之ELK日志管理

首先查看总体流程 首先创建namespace apiVersion: v1 kind: Namespace metadata:name: kube-logging 一、首先创建es.yaml --- apiVersion: v1 #kubernetes API版本,采用最新版本v1 kind: Service #资源类型定义为Service metadata: name: elasticsearch-logging # …

【JavaScript】FileReader读取文件成功,但存储的数据为空——总结

目录 问题解决 问题 如题&#xff0c;使用下列代码读取上传的文件&#xff1a; for (let i 0; i < files.length; i) {const reader new FileReader();const fileName files[i].name;reader.onload function(e) {file_datas[fileName] e.target.result;}// 根据需要…

SQL server 数据库面试题及答案(实操3)

一、编程题 公司部门表 department 字段名称 数据类型 约束等 字段描述 id int 主键&#xff0c;自增 部门ID name varchar(32) 非空&#xff0c;唯一 部门名称 description varchar(1024) …

第三十六周:文献阅读+注意力/自注意力机制

目录 摘要 Abstract 文献阅读&#xff1a;锂离子电池RUL预测的SA-LSTM 现有问题 提出方法 提出方法的结构 SA-LSTM预测模型的结构 研究实验 研究贡献 注意力机制 Self-Attention&#xff08;自注意力机制&#xff09; 注意力与自注意力 代码实现attention、self-at…

喜报频传!百望云获评“2023数字经济独角兽”称号

“数字经济独角兽”是在数字经济领域具备高成长性、高创新性和高潜力性的企业&#xff0c;他们不仅是数字经济的先锋&#xff0c;是科技创新型企业的典范&#xff0c;也是推动经济发展的新兴引擎。 12月20日&#xff0c;“2023数字经济独角兽大会”在北京大兴区成功举办。大会以…

介绍一个在线K8S练习平台

是不是有很多小伙伴想学习k8s&#xff0c;但是又没有机器去练习。使用自己的笔记本电脑或者主机只能搭建单机版本的k8s来练习。 现在福利来了&#xff0c;给大家介绍一个在线多节点k8s练习平台&#xff1a;Play with Kubernetes。 Play with Kubernetes 介绍 Play with Kube…

南邮最优化期末复习

黄金分割法 单纯形法&#xff08;大M法&#xff09; 求min, σ找最小&#xff0c;终止条件全部大于0 θ找最小&#xff0c;且不能为负数求max, σ找最大&#xff0c;终止条件全部小于0 θ找最小&#xff0c;且不能为负数 例题 二阶段单纯形法想 分支定界法&#xff08;第二章&…

等级保护的物理安全技术措施

目录 信息安全等级保护物理安全技术的控制点 物理位置的选择 物理访问控制 防盗窃和防破坏 防雷击 防火 防火和防潮 防静电 温湿度控制 电力供应 电磁防护 信息安全等级保护物理安全技术的控制点 物理位置的选择 物理访问控制 防盗窃和防破坏 防雷击 防火 防火和防…

【Materials Studio】 Materials Studio 2019 安装教程

【Materials Studio】 Materials Studio 2019 安装教程 软件介绍软件安装安装体验软件获取 软件介绍 Materials studio是一个完整的建模和仿真环境&#xff0c;旨在让材料科学和化学领域的研究人员能够预测和理解材料的原子和分子结构与其特性和行为之间的关系。使用Materials…

Redis数据结构(常用5+4种特殊数据类型)

1、Redis 数据类型以及使用场景分别是什么&#xff1f; Redis 提供了丰富的数据类型&#xff0c;常见的有五种数据类型&#xff1a;String&#xff08;字符串&#xff09;&#xff0c;Hash&#xff08;哈希&#xff09;&#xff0c;List&#xff08;列表&#xff09;&#xff…

【Vue3+TypeScript】快速上手_笔记

前言 1. Vue3简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;n 经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 截止2023年10月&#xf…

智能优化算法应用:基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.孔雀算法4.实验参数设定5.算法结果6.参考文献7.MA…

Spring系列学习二、Spring框架的环境配置

Spring框架的环境配置 一、Java环境配置二、 Spring框架的安装与配置三、Maven与Gradle环境的配置四、IDE环境配置&#xff08;Eclipse与IntelliJ IDEA&#xff09;五、结语 一、Java环境配置 所有编程旅程总是得从基础开始&#xff0c;如同乐高积木大作的基座&#xff0c;首先…