【力扣】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算法,只要把栈换成队列,嗯,差不多了。

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

天天开心哦~

请你喝碗鸡汤

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

                                                                                                                                ——卢思浩        

加油哦~

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

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

相关文章

2024哪款洗地机最值得入手?热门洗地机推荐

近年来&#xff0c;洗地机的被大家熟悉&#xff0c;越来越多的家庭购置洗地机来清洁家里的卫生&#xff0c;集吸、拖、洗为一体的三重清洁方式&#xff0c;为经常打扫卫生的宝妈脱离了做家务的困境&#xff0c;不用再经历繁琐的清洁步骤(扫地→拖地→拖干)&#xff0c;一拖一拉…

华为数通方向HCIP-DataCom H12-831题库(多选题:221-240)

第221题 在割接项目的项目调研阶段需要对现网硬件环境进行观察,主要包括以下哪些内容? A、设备的位置 B、ODF位置 C、接口标识 D、光纤接口对应关系 答案:ABCD 解析: 在项目割接前提的项目调研阶段,需要记录下尽可能详细的信息。 第222题 以下哪些项能被正则表达式10*成…

2024年山东省安全员B证证考试题库及山东省安全员B证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年山东省安全员B证证考试题库及山东省安全员B证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大…

SQL server 数据库练习题及答案(练习2)

使用你的名字创建一个数据库 创建表&#xff1a; 数据库中有三张表&#xff0c;分别为student,course,SC&#xff08;即学生表&#xff0c;课程表&#xff0c;选课表&#xff09; 问题&#xff1a; --1.分别查询学生表和学生修课表中的全部数据。--2.查询成绩在70到80分之间…

JBoss JMXInvokerServlet 反序列化漏洞 CVE-2015-7501 已亲自复现

JBoss JMXInvokerServlet 反序列化漏洞 CVE-2015-7501 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用 修复建议总结 漏洞名称 漏洞描述 在Oracle Rapid Planning 12.1/12.2.2中发现了一个被归类为“严重”的漏洞。受到影响的是一些未知的组件处理中间层。升…

JAVA日志

日志 Slf4j slf4j 的全称是 Simple Loging Facade For Java&#xff0c;即它仅仅是一个为 Java 程序提供日志输出的统一接口&#xff0c;并不是一个具体的日志实现方案&#xff0c;就比如 JDBC 一样&#xff0c;只是一种规则而已。所以单独的 slf4j 是不能工作的&#xff0c;…

如何使用 Matplotlib 绘制 3D 圣诞树

系列文章目录 前言 转自&#xff1a;How to draw a 3D Christmas Tree with Matplotlib | by Timur Bakibayev, Ph.D. | Analytics Vidhya | Mediumhttps://medium.com/analytics-vidhya/how-to-draw-a-3d-christmas-tree-with-matplotlib-aabb9bc27864 因为我们把圣诞树安装…

Sql 动态行转列

SELECT ID, Name, [Month],auth FROM dbo.Test3 数据列表&#xff1a; 1.静态行专列 Select auth, MAX( CASE WHEN [Month] 一月 then Name else null end) 一月, MAX( CASE WHEN [Month] 二月 then Name else null end) 二月, MAX( CASE WHEN…

零基础学Java第一天

1.什么是Java Java是一门编程语言 思考问题&#xff1a; 人和人沟通? 中文 英文 人和计算机沟通&#xff1f; 计算机语言&#xff1a; C C C# php python 2. Java诞生 前身叫Oak&#xff08;橡树&#xff09; 目前最流行的版本还是JDK8 3.Java三大平台体系 JavaSE&#xff08…

(企业 / 公司项目)微服务OpenFeign怎么实现服务间调用?(含面试题)

Feign: 远程调用组件使用步骤&#xff0c;理解上面的图  后台系统中, 微服务和微服务之间的调用可以通过Feign组件来完成.  Feign组件集成了Ribbon负载均衡策略(默认开启的, 使用轮询机制),Hystrix熔断器 (默认关闭的, 需要通过配置文件进行设置开启)  被调用的微服务…

【AI服饰】孔雀背景服装_AIGC服饰订制设计咨询产业

服饰系列 AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;服饰图是指通过人工智能生成的服装设计图案。随着人工智能技术的不断进步&#xff0c;AIGC服饰图在未来有着广阔的发展空间。 首先&#xff0c;AIGC服饰图可以提供更多的设计可能性。传统的服…

工作实践篇 Flink(一:flink提交jar)

一&#xff1a;参数 flink 模式 – standalone 二&#xff1a;步骤 1. 将本地测试好的代码进行本地运行。确保没问题&#xff0c;进行打包。 2. 找到打好的jar包&#xff0c;将jar包上传到对应的服务器。 3. 执行flink命令&#xff0c;跑代码。 /opt/flink/flink-1.13.6/bi…

连续语义分割(CSS)24种最新经典方法汇总,包含数据回放、自监督、正则化等5个细分方向

连续语义分割&#xff08;CSS&#xff09;是计算机视觉中的一个新兴领域&#xff0c;其基本任务是在某一时刻学习预测特定类别的图像分割&#xff0c;并在随后需要的时候连续增加学习类别的数量&#xff0c;同时保持对已有类别的分割能力。这个过程中需要解决的主要挑战包括灾难…

2023年全国职业院校技能大赛网络系统管理网络模块 运维服务器配置

(五)网络运维配置 1.完成整网连通后,进入网络监控运维阶段,运维软件已安装在PC的虚拟机中,通过运维平台监控拓扑中所有网络设备(AP除外)。考试现场提供运维平台登陆的用户名密码信息。 其他的如上使用设备管理地址 2.通过运维平台将被监控设备纳入监控范围;通过拓扑配…

前端实现H265编码的m3u8视频流播放

前言 视频监控是智慧城市、智慧园区等WebGIS类系统中最为常见的硬件对接设备&#xff0c;最常用的监控视频流格式为m3u8格式&#xff0c;但是m3u8格式通常都是h.265编码格式的&#xff0c;我搜遍了几乎所有前端视频播放插件&#xff0c;几乎普通的播放器插件都不支持h.265格式…

Spring Boot整合MyBatis-Plus框架快速上手

最开始&#xff0c;我们要在Java中使用数据库时&#xff0c;需要使用JDBC&#xff0c;创建Connection、ResultSet等&#xff0c;然后我们又对JDBC的操作进行了封装&#xff0c;创建了许多类似于DBUtil等工具类。再慢慢的&#xff0c;出现了一系列持久层的框架&#xff1a;Hiber…

记一次接口交互is开头的属性序列化后“is”丢失问题

问题背景&#xff1a; 今天在做项目联调时调用别人的第三方接口时&#xff0c;发现字段传递不对导致参数传递异常的问题&#xff0c;当时还很奇怪&#xff0c;明白传好着呢&#xff0c;怎么就好端端的出现字段不对的情况呢&#xff1f; 查看发现该字段为boolean类型的isIsRef…

Linux下安装MySQL

Linux下安装MySQL 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.7.html#downloads 解压 tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar 再移动并重命名一下 mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/mysql创建mysql用户组和用户并修改权限…

【回溯】符号三角形问题Python实现

文章目录 [toc]问题描述回溯法时间复杂性Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;回溯法 问题描述 下图是由 14 14 14个“ ”和 14 14 14个“ − - −”组成的符号三角形&#xff0c; 2 2 2个同号下面都是” “&#xff0c; 2 2 2个异号下面都是“ −…

QT编译并部署QtMqtt相关环境+跑测demo【超详细教程】

文章目录 概要整体架构流程▷下载指定版本的QMqtt源码&#xff1a;▷编译后同步MQTT相关文件&#xff1a; 技术名词解释技术实现步骤详解一、编译源码1、编译报错2、解决思路3、编译通过 二、继续完善mqtt应用环境1、打开编译生成的shadow build文件夹2、同步lib3、同步bin4、同…