当前位置: 首页 > news >正文

代码随想录二刷 530 二叉搜索树的最小绝对差 98. 验证二叉搜索树 700. 二叉搜索树中的搜索

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

代码如下 

func getMinimumDifference(root *TreeNode) int {

          var pre *TreeNode 

          res := math.MaxInt

          var traverse func(root * TreeNode) 

          traverse = func(root * TreeNode)  {  

                 if root == nil {             

                     return 

                 }

                traverse(root.Left)        定义两个指针,一个pre指针,一个为当前节点的root指针,因为是二叉搜索树,所以用中序遍历是递增序列  

                if pre != nil && root.Val - pre.Val < res {   当前一个节点不为空,那么比较前一个节点和当前节点的值,如果比之前的最小差值小,那么就更新最小差值 

                           res = root.Val - pre.Val

                }

                pre = root    此时将pre指针更新,root指针指向下一个节点

                traverse(root.Right)

                

          }

           traverse(root)

           return res 

}

func min(a,b int) int {

    if a < b {

        return a 

    }else {

        return b 

    }

}

98. 验证二叉搜索树

代码如下

func isValidBST(root *TreeNode) bool {

         var pre *TreeNode 

         var traverse func(root *TreeNode) bool 

         traverse = func(root *TreeNode) bool {

             if root == nil {         如果是空节点也是二叉搜索树 

                 return true 

             }

             leftres := traverse(root.Left)    遍历左子树,并收集左子树的结果

             if pre != nil && root.Val <= pre.Val {  因为用中序遍历二叉搜索树是一个升序序列。如果前一个节点比当前节点大,说明不是二叉搜索树

                 return false 

             }

             pre = root      更新pre指针,并且root指向下一个节点 

             rightres := traverse(root.Right)

             return rightres && leftres    返回左子树和右子树的结果 

         }

         return traverse(root)

}

700. 二叉搜索树中的搜索 

代码如下

func searchBST(root *TreeNode, val int) *TreeNode {

               if root == nil || root.Val == val {  

                   return root 

               }

               if root.Val > val {  利用二叉搜索树的特点,如果当前节点值大于要找的值,则向当前节点的左子树寻找

                  return searchBST(root.Left,val)

               }

               return searchBST(root.Right,val)  如果当前节点的值小于要找的值,则向当前节点的右子树寻找 

}

相关文章:

代码随想录二刷 530 二叉搜索树的最小绝对差 98. 验证二叉搜索树 700. 二叉搜索树中的搜索

530 二叉搜索树的最小绝对差 代码如下 func getMinimumDifference(root *TreeNode) int { var pre *TreeNode res : math.MaxInt var traverse func(root * TreeNode) traverse func(root * TreeNode) { if root nil { return } traverse(root.Left) …...

Docker安装——CentOS7.6(详细版)

ps:docker官网 在 CentOS 上安装 Docker 引擎 |官方文档 &#xff08;&#xff09; 一、确定版本&#xff08;必须是7以上版本&#xff09; cat /etc/redhat-release 二、卸载旧版本&#xff08;或者之前装过&#xff0c;没有安装过就不用管了&#xff09; &#xff08;root用…...

论信息系统项目的整体管理(范文)

论信息系统项目的整体管理&#xff08;范文&#xff09; 【摘要】 2016年10月&#xff0c;XX省卫生健康委启动了XX省分级转诊服务平台建设项目&#xff0c;我在项目中担任项目经理&#xff0c;负责项目的全面管理工作。该平台作为全省上下级医院转诊的信息化通道&#xff0c;…...

【音视频处理】音频编码AAC详解,低码率提高音质?

大家好&#xff0c;欢迎来到停止重构的频道。 本期我们介绍音频编码格式AAC。 AAC是音频最常用的编码格式之一&#xff0c;几乎所有的播放器都支持这个编码格式。 其他音频编码格式都是类似的&#xff0c;只是某些细节存在差别&#xff0c;如压缩算法、某些音频参数存在限制…...

逆函数学习

逆函数 给定关系 R ⊆ X Y R\subseteq X\times Y R⊆XY&#xff0c;颠倒 R R R的所有有序偶可以得到 R R R的逆关系 R ~ ⊆ Y X \tilde{R}\subseteq Y\times X R~⊆YX 但是对于函数 f : X → Y f:X\to Y f:X→Y而言&#xff0c;其逆关系 f ~ \tilde{f} f~​可能不是 Y Y Y到…...

代码审计——SSRF详解

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 漏洞描述02 审计要点03 漏洞特征04 漏洞案例05 修复方案 01 漏洞描述 服务端请求伪造攻击&#xff08;SSRF&#xff09;也成为跨站点端口攻击&#xff0c;是由于一些应用在向第三方主机请求资源时提…...

搭建Scala开发环境

一、Windows上安装Scala 1、到Scala官网下载Scala Scala2.13.10下载网址&#xff1a;https://www.scala-lang.org/download/2.13.10.html 单击【scala-2.13.10.msi】超链接&#xff0c;将scala安装程序下载到本地 2、安装Scala 双击安装程序图标&#xff0c;进入安装向导&…...

BLIP和BLIP2

文章主要是对BLIP2 &#xff08;使用冻结图像编码器和大型语言模型的Bootstrapping语言图像预训练&#xff09;论文的阅读笔记&#xff0c;也对BLIP&#xff08;用于统一视觉语言理解和生成的Bootstrapping语言图像预训练&#xff09;算法进行了简单的介绍。 文章&#xff1a;…...

微信小程序开发实战 ⑨(TabBar)

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; 微信小程序 &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f4…...

微前端探秘:初始微前端、现有方案和未来趋势

初识微前端 微前端是什么 概念&#xff1a; 微前端是指存在于浏览器中的微服务。 微前端是一种类似于微服务的架构&#xff0c;它将微服务的理念应用于浏览器端&#xff0c;即将单页面前端应用由单一的单体应用转变为把多个小型前端应用聚合为一体的应用。这就意味着前端应用…...

运维(SRE)成长之路-第2天 文本编辑工具之神VIM

vi和vim简介 在Linux中我们经常编辑修改文本文件&#xff0c;即由ASCII, Unicode 或其它编码的纯文字的文件。之前介绍过nano&#xff0c;实际工作中我们会使用更为专业&#xff0c;功能强大的工具 文本编辑种类&#xff1a; 全屏编辑器&#xff1a;nano&#xff08;字符工具…...

45从零开始学Java之详解static修饰符、静态变量和静态方法

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在前一篇文章中&#xff0c;壹哥给大家讲解了abstract关键字&#xff0c;从而我们掌握了抽象类与抽象…...

电商超卖,从业务到设计

编辑导语&#xff1a;超卖这一概念的定义可以从不同层面进行阐述&#xff0c;比如平台层面、渠道层面、仓库层面等。而假设因超卖导致订单难以履行&#xff0c;则容易让用户体验“打折”。为什么有时电商超卖的现象会发生&#xff1f;可以从哪些角度来降低超卖导致的风险&#…...

【MySQL】表的约束

表的约束 表的约束1. 空属性2. 默认值3. 列描述4. zerofill&#xff08;自动补零&#xff09;5. 主键—primary key5.1 复合主键 6. 自增长—auto_increment7.唯一键 --- unique8. 外键 --- foreign key…reference9. 综合案例 表的约束 真正约束字段的是数据类型&#xff0c;…...

【计算机网络】第一章 概述(下)

文章目录 第一章 概述1.5 计算机网络的性能指标1.5.1 速率1.5.2 带宽1.5.3 吞吐量1.5.4 时延 1.6 计算机网络体系结构1.6.1 常见的体系结构1.6.2 分层的必要性1.6.4 体系结构中的专用术语 1.8 习题 第一章 概述 1.5 计算机网络的性能指标 常用的 计算机网络 的性能指标有以下 …...

化工园区人员全过程轨迹化安全解决方案

1、项目背景 化工园区化工厂是生产安全重点单位&#xff0c;对人员定位管理需求强烈。对人员定位主要需求是&#xff1a;一般区域人数统计、人员轨迹、重点区域人员实时精准定位。 华安联大安全化工园区人员全过程轨迹化安全解决方案通过人员实时定位管理、移动轨迹追溯、险情…...

Java泛型中的T、E、K、V、?通配符,你确定都了解吗?

目录 前言 泛型带来的好处 泛型中通配符 小结 前言 Java 泛型&#xff08;generics&#xff09;是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制&#xff0c;该机制允许开发者在编译时检测到非法的类型。 泛型的本质是参数化类型&#xff0c;也就是说所操…...

Jenkins部署及使用

Jenkins 1.定义 1.Jenkins是一款开源CI/CD软件&#xff0c;用于自动化各种任务&#xff0c;包括构建、测试和部署软件 1.CI/CD 1.CI&#xff1a;持续集成(Continuous Integration) 1.协同开发是目前主流的开发方式&#xff0c;一般由多位开发人员同时处理同一个应用的不同模块…...

UML类图(二)

相信希望&#xff0c;相信自己 上一章简单介绍了 设计模式的原则(一), 如果没有看过,请观看上一章 本文参考文章: 常见UML符号详解 UML (Unified modeling language) 统一建模语言&#xff0c;是一种用于软件系统分析和设计的语言工具&#xff0c; 它用于帮助软件开发人员进行…...

【IoU全总结】GIoU, DIoU, CIoU, EIoUFocal, αIoU, SIoU,WIoU【基础收藏】

&#x1f951; Welcome to Aedream同学 s blog! &#x1f951; 并不存在效果一定优秀的IoU&#xff0c;需要结合自己的网络、数据集试验。 不想深究原理可直接跳转总结。文内公式均为手打&#xff0c;非图片&#xff0c;方便查看 文章目录 L1 Loss&#xff0c;L2Loss&#xff0…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...