代码随想录二刷 |二叉树 | 二叉搜索树的最小绝对差

代码随想录二刷 |二叉树 | 二叉搜索树的最小绝对差

  • 题目描述
  • 解题思路 & 代码实现
    • 递归法
    • 迭代法

题目描述

530.二叉搜索树的最小绝对差

给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。

示例:
在这里插入图片描述
提示:树中至少有 2 个节点。

解题思路 & 代码实现

题目中要求在二叉搜索树上任意两节点的差的绝对值的最小值。

遇到在二叉搜索树上求什么最值啊,差值之类的,就把它想成在一个有序数组上求最值,求差值,这样就简单多了。

递归法

在二叉搜素树中序遍历的过程中,我们就可以直接统治最小差值。我们需要用一个pre节点记录一下cur节点的前一个节点。

在这里插入图片描述

class Solution {
private:int result = INT_MAX;TreeNode* pre = NULL;void traversal(TreeNode* cur) {if (cur == NULL} return;traversal(cur->left);if (pre != NULL) {result = min(result, cur->val - pre->val);} pre = cur;traversal(cur->right);
public:int getMinimumDifference(TreeNode* root) {traversal(root);return result;}
};

迭代法

class Solution {
public:int getMinimumDifference() {stack<TreeNode> st;TreeNode* cur = root;TreeNode* pre = NULL:int result = INT_MAX;while (cur != NULL && !st.empty()) {if (cur != NULL) {st.push(cur);cur = cur->left;} else {cur = st.top();st.pop();if (pre != NULL) {result = min(result, cur->val - pre->val);}pre = cur;cur = cur->right;}}return result;}
};

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

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

相关文章

从0开始python学习-47.pytest框架之解决Template替换无法进行二次处理的问题之热加载

问题&#xff1a;当参数为动态参数时&#xff0c;Template替换无法进行二次处理 解决方案&#xff1a;通过热加载来进行替换 热加载原理&#xff1a;在代码运行的过程中动态的调用python中的方法达到获得动态参数 可以进行热加载的情况&#xff1a;yaml文件&#xff0c;随机…

用我这套模板,几分钟做出文档网站!

大家好&#xff0c;我是保姆皮&#xff0c;最近我上线了自己的《编程宝典》网站&#xff0c;可以在线阅读我分享过的各种编程学习路线和知识干货。 指路&#xff1a;https://codefather.cn/ 不少小伙伴催我出教程&#xff0c;说也想做个类似的文档网站。 所以我用最快的速度出了…

程序员如何写高水平简历?(附模板)

Q&#xff1a;什么是高水平的简历&#xff1f; A&#xff1a;满足HR需求的同时&#xff0c;最大化的体现自身价值的简历是高水平的简历 HR的需求是什么&#xff1f; ✅ HR想看到清晰专业的简历模板 ——家人们每天看几百份简历谁懂啊&#xff01;花里胡哨真看不下去一点&…

OpenAI 自带的检索功能好用吗?定量测评带你深度了解!

向量数据库的劲敌来了&#xff1f;又有一批赛道创业公司要倒下&#xff1f; …… 这是 OpenAI 上线 Assistant 检索功能后&#xff0c;技术圈传出的部分声音。原因在于&#xff0c;此功能可以为用户提供基于知识库问答的 RAG&#xff08;检索增强生成&#xff09; 能力。而此前…

深入理解 MyBatis-Plus 批量保存方法

前言 在项目开发中&#xff0c;需要插入批量插入20多万条数据&#xff0c;通过日志观察&#xff0c;发现在调用MyBatis-Plus中的saveBatch()方法性能非常的差&#xff0c;本篇文章主要分享一下saveBatch()的原理以及使用的注意事项 原理 我们通过源码的形式进行解析saveBatc…

生信步骤|Orthofinder寻找直系同源基因

在探究功能基因的时候&#xff0c;我们经常需要对所研究的基因/蛋白质进行聚类分组&#xff0c;逐个类群探究蛋白功能。创建同源群可以采用Otrhofinder软件&#xff0c;该软件安装方便&#xff0c;运行快速&#xff0c;调用简单&#xff0c;可以说是构建同源群的神器。从OrthoF…

逆变器简述

一般家用电器&#xff0c;像微波炉&#xff0c;电饭煲等都是直接插墙壁上的电就可以工作&#xff0c;所以这些家用电器是使用我们市电AC220V的电压 但我们用到的手机&#xff0c;电瓶车以及新能源汽车都是需要充电器的&#xff0c;所以这些用电产品里面都是有电池的&#xff0…

统计学-R语言-4.1

文章目录 前言编写R函数图形的控制和布局par函数layout函数 练习 前言 安装完R软件之后就可以对其进行代码的编写了。 编写R函数 如果对数据分析有些特殊需要&#xff0c;已有的R包或函数不能满足&#xff0c;可以在R中编写自己的函数。函数的定义格式如下所示&#xff1a; …

在微服务架构中认证和授权的那些事儿

在微服务架构中认证和授权是最基础的服务能力&#xff0c;其中这一块行业类的标准就是OAuth2 和 SSO &#xff0c;而OAuth2 和 SSO 可以归类为“用户管理和身份验证”工具&#xff0c;OpenID Connect 1.0是 OAuth 2.0 协议之上的一个简单身份层。 Part.1 认识OAuth 2.0 OAuth…

低代码与小程序开发:简化创新,加速应用开发

随着信息技术的迅速发展&#xff0c;应用程序的需求与日俱增。然而&#xff0c;传统的软件开发往往耗时、复杂&#xff0c;对于许多企业和开发者来说&#xff0c;开发应用程序的成本和难度成为了一道门槛。而近年来&#xff0c;低代码开发和小程序开发的兴起为解决这一难题带来…

RocketMQ源码阅读-Producer发消息

RocketMQ源码阅读-Producer发消息 1. 从单元测试入手2. 启动过程3. 同步消息发送过程4. 异步消息发送过程5. 小结 Producer是消息的生产者。 Producer和Consummer对Rocket来说都是Client&#xff0c;Server是NameServer。 客户端在源码中是一个单独的Model&#xff0c;目录为ro…

Torch not compiled with CUDA enabled

最近接触chatglm3对话预训练模型&#xff0c;从git上下载&#xff0c;装包装半天&#xff0c;最后终于跑起来了&#xff0c;但是一对他进行对话&#xff0c;后台就开始报错了 File "E:\Python311\Lib\site-packages\torch\nn\modules\linear.py", line 114, in forw…

【c++】入门4

内联函数声明和定义不能分开 inline不建议声明和定义分离&#xff0c;分离会导致链接错误。因为inline被展开&#xff0c;就没有函数地址 了&#xff0c;链接就会找不到。 auto关键字 随着程序越来越复杂&#xff0c;程序中用到的类型也越来越复杂&#xff0c;经常体现在&…

JavaWEB学习笔记 2024-1-5 --HTML

JavaWEB 上一篇 个人整理非商业用途&#xff0c;欢迎探讨与指正&#xff01;&#xff01; 文章目录 JavaWEB1.HTML1.1HTML中的三大基本标签1.2显示标签1.2.1文本标签1.2.2表单标签1.2.2.1input标签1.2.2.2下拉框1.2.2.3多行文本1.2.2.4表单标签的通用属性1.2.2.5form标签1.2…

用JAVA实现樱花飘落

用java实现一个樱花飘落的方法 package Text2;import javax.swing.*; import java.awt.*; import java.util.ArrayList; import java.util.List;public class Sakura extends JFrame {private List<Point> sakuraList; // 樱花的位置列表public Sakura() {sakuraList n…

动态pv策略和组件

pv和pvc&#xff0c;存储卷&#xff1a; 存储卷&#xff1a; emptyDir 容器内部&#xff0c;随着pod销毁&#xff0c;emptyDir也会消失 不能做数据持久化 hostPath&#xff1a;持久化存储数据 可以和节点上的目录做挂载。pod被销毁了数据还在 NFS&#xff1a;一台机器&am…

【入门】字符串对比(UPC)

题目描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到100之间)&#xff0c;它们之间的关系是以下4种情况之一&#xff1a; 1&#xff1a;两个字符串长度不等。比如 Beijing 和 Hebei 2&#xff1a;两个字符串不仅长度相等&#xff0c;而且相应位置上的字符完…

x-cmd pkg | tsx - Node.js 的直接替代品

目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 tsx 代表 “TypeScript execute”&#xff0c;由 TypeScript 编写&#xff0c;内部使用由 Go 语言编写的 esbuild 核心二进制实现超快的 TypeScript 编译&#xff0c;旨在增强 Node.js 以无缝运行 TypeScript / ESM /…

Golang的API项目快速开始

开启一个简单的API服务。 golang的教程网上一大堆&#xff0c;官网也有非常详细的教程&#xff0c;这里不在赘述这些基础语法教程&#xff0c;我们意在快速进入项目开发阶段。 golang好用语法教程传送门&#xff1a; m.runoob.com/go/ 编写第一个API 前提&#xff1a;按照上一…

3.3 设计模式基础

设计模式的识别&#xff1a;经验丰富的开发者经常会发现&#xff0c;新问题往往与他们之前所遇到的问题存在相似之处&#xff0c;虽然这些问题和解决方案可能各不相同。正是这些问题之间的共性催生了设计模式的概念&#xff1a;将对类似问题解决方案的理解泛化和形式化。 模式…