代码随想录-62-530. 二叉搜索树的最小绝对差

news/2024/10/6 10:23:21 标签: 数据结构

目录

  • 前言
    • 题目
    • 1.二叉搜索树中序遍历特性介绍(并且使用一个指针始终指向前一个)
      • 全局变量
    • 2. 本题思路分析:(中序遍历)
    • 3. 算法实现
    • 4. 算法坑点

前言

我在刷卡哥的“代码随想录”,自己的总结笔记均会放在“算法刷题-代码随想录”该专栏下。
代码随想录此题链接

题目

在这里插入图片描述
在这里插入图片描述

1.二叉搜索树中序遍历特性介绍(并且使用一个指针始终指向前一个)

  1. 二叉搜索树中序遍历是所有节点为递增顺序。
  2. 用一个TreeNode对象充当指向上一个遍历的节点的指针,
  3. 然后从遍历到第2个节点开始比较当前和上一个节点的差值与最小值的大小。

全局变量

  1. min是最小的值
int min = Integer.MAX_VALUE;//初始化为int的最大值
  1. TreeNode pre;上一个节点

2. 本题思路分析:(中序遍历)

此题可以使用递归遍历,
三部曲:

  • 第一步确定参数和返回值
    参数:当前节点
    返回值:boolean值
  • 第二步截止递归的条件
    当前节点为null,则返回Integer.MAX_VALUE;
  • 第三步单层递归逻辑
    中序遍历,先递归左孩子,不用考虑返回值的接收;
    在处理中间节点,判断pre节点不为空(说明遍历的非第1个节点),则比较min和root节点和pre节点的差值,并且更新min。
    将当前的节点赋值给pre。
    再递归右孩子。

3. 算法实现

class Solution {
    int min = Integer.MAX_VALUE;
    TreeNode pre;
    public int getMinimumDifference(TreeNode root) {
        if(root == null){
            return Integer.MAX_VALUE;
        }
        getMinimumDifference(root.left);
        if(pre != null){
            min = Math.min(min,root.val - pre.val);//二叉搜索树中序遍历节点逐渐递增
        }
        pre = root;
        getMinimumDifference(root.right);
        return min;
    }
}

4. 算法坑点

暂无


http://www.niftyadmin.cn/n/197846.html

相关文章

加强化工企业危化品管理的几点建议

目录 加强危化品管理的重要性 我国危化品管理中存在的问题 加强化工企业危化品追溯管理的几点建议 加强危化品管理的重要性 危险化学品是指具有毒害、腐蚀、爆炸、燃烧、助燃等性质,可能对人体健康、环境安全和公共安全造成危害的化学品。危险化学品的生产、储存、…

使用URLEncode和URLDecode的作用和原因

在Web开发中,经常需要对URL参数、Cookie、表单数据等进行编码和解码。Java Servlet API提供了java.net.URLEncoder和java.net.URLDecoder两个类来支持URL编码和解码。 URL编码的作用是将一些特殊字符(如空格、&、等)在传输过程中转换成特…

Java--- 抽象类

(一)定义 官方说法:在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类…

将s16le的音频流转换为float类型

这是一个将s16le格式音频文件转换为float类型并写入新文件的示例代码。 以下是代码的讲解: 定义WavHeader结构体,用于存储WAV文件头中的信息。从命令行参数中获取输入和输出文件名(第一个参数代表程序自身,因此输入文件名为第二个…

智慧农业系统开发功能有哪些?

农业从古至今都是备受关注的话题,新时代背景下农业发展已经融合了互联网,数字化技术等新型发展方式,形成了农业物联网管控系统,让农业生产更加科技化、智能化、高效化,对农业可持续发展有巨大的推动作用。所以&#xf…

Android 环境配制

1.下载Andrioid SDK: 找到相应版本就可以下载了,安装按说明即可 https://www.androiddevtools.cn/ 组件安装 通过SDK Manager进行相应组件安装,SDK安装时,可以自动进入Manager安装页面,如果需要补安装其他组件&…

C 输入 输出

C 输入 & 输出 当我们提到输入时,这意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C 语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。 当我们提到输出时,这意味着要在屏幕上、打印机上或…

工程造价能不能预防超预算

决算超预算、预算超概算、概算超估算……工程造价总在超预算,这老大难问题到底该如何解决。 工程造价为何出现“三超”?要如何解决“三超”问题?首先我们先了解一下造成我国建设市场投资“三超”问题出现的原因。 项目的4个参与方 政府部门—…