182.二叉树:二叉搜索树的最小绝对差(力扣)

代码解决

/**
 * 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:
    // 初始化最小差值为INT_MAX
    int result = INT_MAX;
    // 用于记录前一个节点的指针
    TreeNode* pre = nullptr;
    
    // 中序遍历函数
    void traversal(TreeNode* node)
    {
        // 如果节点为空,则返回
        if(node == nullptr) return;
        
        // 递归遍历左子树
        traversal(node->left);
        
        // 处理当前节点
        if(pre != nullptr)
        {
            // 更新最小差值
            result = min(result, node->val - pre->val);
        }
        // 更新前一个节点指针
        pre = node;
        
        // 递归遍历右子树
        traversal(node->right);
    }
    
    // 获取二叉搜索树中任意两节点值之间的最小差值
    int getMinimumDifference(TreeNode* root) 
    {
        // 开始中序遍历
        traversal(root);
        // 返回计算出的最小差值
        return result;
    }
};
  1. 定义一个全局变量 result 用于记录最小差值,初始化为 INT_MAX
  2. 定义一个全局变量 pre 用于记录中序遍历过程中的前一个节点。
  3. 定义一个辅助函数 traversal,它接受当前节点作为参数。
  4. 如果当前节点为空,则返回。
  5. 递归地遍历左子树。
  6. 处理当前节点:
    • 如果 pre 不为空,更新最小差值 result 为当前节点值与 pre 节点值之差的最小值。
    • 更新 pre 为当前节点。
  7. 递归地遍历右子树。
  8. 在 getMinimumDifference 函数中,开始中序遍历,并返回计算出的最小差值 result

这个算法的时间复杂度是 O(n),因为每个节点都会被访问一次,其中 n 是树中节点的数量。空间复杂度也是 O(n),因为需要存储递归调用的栈。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

剧本新纪元:探索短剧系统的魔力

在现代社会,随着科技的迅猛进步和生活节奏的不断加快,传统的长篇电视剧和电影已不能完全满足所有人的需求。短剧,由于其简短、快速、直接的特性,正在逐步成为一种文化新趋势。短剧系统正是这一趋势的典型代表,它以独特…

Ansys Mechanical|使用Trace Mapping建立PCB板的有限元模型

Trace Mapping需要使用ECAD的方法 传统方法 vs ECAD方法 传统方法既繁琐又费时。以下是一些数据: 导出电路板布局的step文件大约需要30分钟。 导入Ansys SpaceClaim中大约需要10分钟。 进行布尔运算和共享拓扑操作大约需要24小时甚至更久。 而ECAD方法更加快速且…

CV每日论文--2024.6.12

1、PGSR: Planar-based Gaussian Splatting for Efficient and High-Fidelity Surface Reconstruction 中文标题:PGSR:基于平面的高斯溅射,用于高效、高保真表面重建 简介:这项研究关注于3D高斯喷洒(3DGS)技术,该技术因其高质量渲…

探索生成式AI的未来:Chat与Agent的较量与融合

近年来,生成式人工智能(AI)不仅在技术界引起了广泛关注,更成为了推动多个行业革新的关键力量。这种技术之所以备受瞩目,不仅在于其独特的创造性和高效性,还在于它对未来商业模式和社会结构可能产生的深远影…

Java的Mybatis框架中#{}与${}使用心得

Java的Mybatis框架中#{}与${}使用心得 在MyBatis框架中,#{}和${}都是用来动态地向SQL语句中插入值的,但它们的处理方式和用途有所不同 #{} 安全:#{}是预编译处理,能够有效防止SQL注入。它会将参数看作一个占位符,在…

servlet梦想酒店管理系统

梦想酒店管理系统 酒店管理系统分为管理端,和用户端, 用户端可以查看酒店客房,预定酒店系统,查询预定信息。 管理端:用户管理,类型,房间管理,业务管理,统计分析。 技术&…

无文件落地分离拆分-将shellcode从文本中提取-file

马子分为shellcode和执行代码. --将shellcode单独拿出,放在txt中---等待被读取执行 1-cs生成python的payload. 2-将shellcode进行base64编码 import base64code b en_code base64.b64encode(code) print(en_code) 3-将编码后的shellcode放入文件内 4-读取shellcod…

中国地市分布图

中国地市分布图 (qq.com)

ssm学生成绩管理系统-海豚

ssm学生成绩管理系统-海豚 ssm学生成绩管理系统。 功能:登录,学生信息管理,课程信息,成绩信息, 技术:java,ssm,mybatics,jsp 平台:eclispe或者idea,mysql5.7…

晨持绪科技:抖音网店怎么做有前景

在数字时代的浪潮中,抖音平台以其独特的魅力和庞大的用户基础成为电商的新阵地。开设一家有前景的抖音网店,不仅需要对市场脉搏有敏锐的洞察力,还需融合创新思维与数据驱动的营销策略。 明确定位是成功的先声。深入分析目标消费群体的需求与偏…

官宣!2024影响因子即将公布,或将迎来这些重大变化!

【SciencePub学术】IF是Impact Factor,即我们俗称的“影响因子”,是衡量学术期刊一个重要性的指标。它通过计算期刊上发表的文章在特定时间内被引用的平均次数来评估期刊的影响力。 影响因子计算公式 影响因子(IF)(期…

wms海外仓系统重要吗?对小型海外仓有哪些好处

虽然小型海外仓本身的体量不大,但是在面对激烈的竞争和日益复杂的客户需求面前,要想赢得一席之地,wms海外仓系统还是一个非常必要的工具的。 对于小型海外仓来说,面对的业务复杂度其实并不比大型海外仓小,甚至更大。 …

电能表抄表是什么意思?

一、电能表抄表的定义与重要性 电能表抄表,顾名思义,是指对安装在用户处的电能表进行读数记录的过程,以计算用户的用电量。它是电力公司计算电费、监控电网运行状态以及进行能源管理的基础。随着科技的发展,传统的手动抄表方式逐…

提升消费者满意度的五星售后服务认证

在当今竞争激烈的市场环境中,消费者满意度是企业取得成功的重要因素。五星售后服务认证作为一种权威性认证,可以显著提高消费者满意度,增强企业的竞争力。本文将从四个方面探讨五星售后服务认证如何提高消费者满意度。 五星售后服务认证是由国…

立创·天空星开发板-GD32F407VE-Timer

本文以 立创天空星开发板-GD32F407VET6-青春版 作为学习的板子,记录学习笔记。 立创天空星开发板-GD32F407VE-Timer 定时器基本定时器示例 定时器 定时器是嵌入式系统中常用的一种外设,它可以产生一定的时间间隔、延时、定时等功能,广泛应用于…

NVMe全闪存储系统性能测试及产品功能与应用场景

今天我们继续对全闪存储系统GS 5024UE的评测,重点关注GS 5024UE的性能测试数据,以及产品所具备的功能、应用场景。通过Windows IOmeter测试软件,来测试GS 5024UE设备的性能,在机器上配上24颗 NVMe 3.84TB硬盘, 16条32Gb FC数据&am…

C++ 03 之 命名空间

game_kun.cpp #include "game_kun.h"void kun::atk() {cout << "吃鸡的攻击"<< endl; } game_lol.cpp #include "game_lol.h"void lol::atk() {cout << "lol的攻击"<< endl; } game_kun.h #include <…

举个栗子!Tableau 技巧(276):学做径向柱状图(Radial Column Chart)

关于 径向柱状图&#xff08;Radial Column Chart&#xff09;&#xff0c;俗称环形柱状图。它的用法跟柱形图基本一致&#xff0c;不同之处在于它的值刻度是环形的&#xff0c;数值从内到外依次增加&#xff0c;柱子越长代表数值越大。 数据粉可能会问&#xff1a;径向柱形图…

调用华为API实现车牌识别

目录 1.作者介绍2.华为云车牌识别2.1车牌识别技术2.2华为云OCR 3.实验过程3.1获取API密钥3.2Python代码实现3.3实验结果 参考链接 1.作者介绍 袁明懿&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2023级研究生 研究方向&#xff1a;机器视觉与人工智能 电子…

神经网络 torch.nn---nn.RNN()

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) RNN — PyTorch 2.3 documentation torch.nn---nn.RNN() nn.RNN(input_sizeinput_x,hidden_sizehidden_num,num_layers1,nonlinearitytanh, #默认tanhbiasTrue, #默认是Truebatch_firstFalse,dropout0,bidirection…