牛客 二叉树 NB1 牛群的最大高度

news2025/1/12 20:51:07

原题链接

就不采用, 递归的方式来做了, 自己弄个栈来做
用栈来保存路径, curr 表示当前的节点, pre 保留往回走时的上一步

如果是 用递归来做 它的栈链路是这样的, 可以做下参考
在这里插入图片描述

黄色表示返回

用栈模拟的话, 不可能模拟得一摸一样, 递归的话一个栈会经过3次, 第三次后就不会再碰到这个栈了, 可以和它拜拜了,
换做模拟来说, 只要是第3次使用该栈节点, 就可以把这个节点给弹出了

curr 的 遍历 策略
一路向左走, 触底了, curr == null 了, 就要往回走了, 就看栈顶节点的右边有没有, 右边有且触底不是从右边上来的, 就往右走

往右走后还是一样的策略, 触底一路返回, 拿到栈顶元素, 发现是从右边上来的(即第栈顶节点被第三次使用), 把栈顶节点弹出, 继续返回, 直到栈为空为止

把怎么遍历二叉树弄明白后, 咱们只需要简简单单在前序遍历的位置完成最大值的测试及更新即可

public class Solution {
    public int findMaxHeight (TreeNode root) {
        int max = 0;
        TreeNode pre = null;
        TreeNode curr = root;
        Stack<TreeNode> stack = new Stack<>();
        while(curr != null || !stack.isEmpty()) {
            if(curr != null) {
                stack.push(curr); // 第一次使用
                max = Math.max(max, curr.val); 
                curr = curr.left;
            } else {
                TreeNode parent = stack.peek();
                if(parent.right == null || pre == parent.right) { // 第三次使用
                    pre = stack.pop();// 保留返回时的上一步的记录, 用来做第几次使用的测试
                } else { // 第二次使用
                    curr = parent.right;
                }
            }
        }
        return max;
    }
}

具体代码参上

好的!本次分享到这就结束了
如果对铁汁你有帮助的话,记得点赞👍+收藏⭐️+关注➕
我在这先行拜谢了:)

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

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

相关文章

去除图片水印软件-inpaint

一、普通使用教程 亲眼看看使用 Inpaint 从照片中删除不需要的元素是多么容易&#xff1a; 1.1加载图片 1.2 选择要纠正的问题区域 1.3 告别不需要的对象并保存 二、功能 1 修复旧照片 老并不总是意味着坏。我们拥有的一些旧照片对我们来说仍然很重要&#xff0c;因为它们仍…

OpenCV 入门(二)—— 车牌定位

OpenCV 入门系列&#xff1a; OpenCV 入门&#xff08;一&#xff09;—— OpenCV 基础 OpenCV 入门&#xff08;二&#xff09;—— 车牌定位 OpenCV 入门&#xff08;三&#xff09;—— 车牌筛选 OpenCV 入门&#xff08;四&#xff09;—— 车牌号识别 OpenCV 入门&#xf…

[附源码]秦时明月6.2魔改版_搭建架设教程_附GM工具_安卓苹果

本教程仅限学习使用&#xff0c;禁止商用&#xff0c;一切后果与本人无关&#xff0c;此声明具有法律效应&#xff01;&#xff01;&#xff01;&#xff01; 教程是本人亲自搭建成功的&#xff0c;绝对是完整可运行的&#xff0c;踩过的坑都给你们填上了 一. 演示视频 秦时明…

[嵌入式AI从0开始到入土]17_Ascend C算子开发

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…

libcity/model/trajectory_loc_prediction/DeepMove.py

1 DeepMove 1.1 构造函数 1.2 初始化权重 1.3 forward 1.4 predict def predict(self, batch):score self.forward(batch)if self.evaluate_method sample:# build pos_neg_inedxpos_neg_index torch.cat((batch[target].unsqueeze(1), batch[neg_loc]), dim1)score tor…

VitePress快速上手

完整教程&#xff1a;https://blog.share888.top/note/front-end/vitePress/01-vitePress%E5%AE%89%E8%A3%85.html https://blog.share888.top/ VitePress快速上手 官方文档&#xff1a;https://vitepress.dev/zh/guide/markdown VitePress中文网&#xff1a;https://vitejs…

2024最新 Gradle 入门教程

&#x1f680; 2024最新 Gradle 入门教程 &#x1f31f; 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍…

深度学习笔记_10YOLOv8系列自定义数据集实验

1、mydaya.yaml 配置方法 # 这里分别指向你训练、验证、测试的文件地址&#xff0c;只需要指向图片的文件夹即可。但是要注意图片和labels名称要对应 # 训练集、测试集、验证机文件路径&#xff0c;可以是分类好的TXT文件&#xff0c;也可以直接是图片文件夹路径 train: # t…

剁手党必看——转转红包使用规则与最优组合计算全解析

​ 1、省钱攻略基础之“了解平台红包使用规则” 2、举个栗子 3、最优红包组合计算方法进化过程 3.1、初代“笛卡尔乘积”版 3.2、二代“边算边比较Map聚合”版 3.3、三代“边算边比较数组索引定位”版 4、总结 1、省钱攻略基础之“了解平台红包使用规则” 规则一&#x…

BACnet到OPC UA的楼宇自动化系统与生产执行系统(MES)整合

在智能制造的浪潮下&#xff0c;一家位于深圳的精密电子制造企业面临着前所未有的挑战&#xff1a;如何高效地将楼宇自动化系统与生产执行系统&#xff08;MES&#xff09;整合&#xff0c;实现能源管理与生产流程的精细化控制。这家企业的楼宇控制系统使用的是BACnet协议&…

Siemens-NXUG二次开发-创建块(长方体)特征、圆柱特征、圆锥或圆台特征、球体特征、管道特征[Python UF][20240504]

Siemens-NXUG二次开发-创建块&#xff08;长方体&#xff09;特征、圆柱特征、圆锥或圆台特征、球体特征、管道特征[Python UF][20240504] 1.python uf函数1.1 NXOpen.UF.ModlFeatures.CreateBlock11.2 NXOpen.UF.ModlFeatures.CreateCyl11.3 NXOpen.UF.ModlFeatures.CreateCon…

缓存雪崩、击穿、击穿

缓存雪崩&#xff1a; 就是大量数据在同一时间过期或者redis宕机时&#xff0c;这时候有大量的用户请求无法在redis中进行处理&#xff0c;而去直接访问数据库&#xff0c;从而导致数据库压力剧增&#xff0c;甚至有可能导致数据库宕机&#xff0c;从而引发的一些列连锁反应&a…

ORACLE 19C RAC DIAG进程消耗大量内存的分析

近期一个ORACLE 19C的RAC环境&#xff0c;多次出现数据库实例的后台进程DIAG消耗很多内存&#xff08;达到20G&#xff09;&#xff0c;节点1、节点2都出现过次问题。 问题分析&#xff1a;通过对DIAG进程TRACE分析&#xff0c;结合在ORACLE官方后台进行问题、BUG查询匹配&…

什么样的行业适合做私域?

私域营销适用于各种行业&#xff0c;但以下几个行业尤其适合进行私域营销&#xff1a; 1、零售行业&#xff1a;私域营销可以帮助零售企业建立与顾客的直接联系&#xff0c;提高顾客忠诚度和复购率。通过私域营销&#xff0c;零售企业可以进行个性化推荐、定制化服务&#xff…

VALSE 2024 Workshop报告分享┆面向实际场景体验的多模态大模型DeepSeek VL

2024年视觉与学习青年学者研讨会&#xff08;VALSE 2024&#xff09;于5月5日到7日在重庆悦来国际会议中心举行。本公众号将全方位地对会议的热点进行报道&#xff0c;方便广大读者跟踪和了解人工智能的前沿理论和技术。欢迎广大读者对文章进行关注、阅读和转发。文章是对报告人…

视频改字祝福/豪车装X系统源码/小程序uniapp前端源码

uniapp视频改字祝福小程序源码&#xff0c;全开源。创意无限&#xff01;AI视频改字祝福&#xff0c;豪车装X系统源码开源&#xff0c;打造个性化祝福视频不再难&#xff01; 想要为你的朋友或家人送上一份特别的祝福&#xff0c;让他们感受到你的真诚与关怀吗&#xff1f;现在…

通过Nginx转发admin连接licloud-api-develop接口

1.需求配置 在本地环境部署一套开发环境&#xff0c;方便开发金磊调试功能 所使用到的服务有nginx&#xff0c;mysql&#xff0c;rabbitmq&#xff0c;redis&#xff0c;docker 服务安装网上都有教程这里就不一一列举出来了&#xff0c;服务都配置好之后 开始组建开发环境 2…

Java进阶05 时间API异常

Java进阶05 一、递归算法 方法直接&#xff08;自己调自己&#xff09;或间接&#xff08;方法调其他方法&#xff0c;其他方法又回调自己&#xff09;调用自身 1、递归思想 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。需要注意&#xff0c;设计递…

商务分析方法与工具(五):Python的趣味快捷-文件和文件夹操作自动化

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

考情分析 | 2025年西北工业大学计算机考研考情分析!

西北工业简称西工大&#xff08;英文缩写NPU&#xff09;&#xff0c;大学坐落于古都西安&#xff0c;是我国唯一一所以同时发展航空、航天、航海工程教育和科学研究为特色&#xff0c;以工理为主&#xff0c;管、文、经、法协调发展的研究型、多科性和开放式的科学技术大学。十…