【数据结构与算法 | 搜索二叉树篇 力扣篇】力扣530

1. 力扣530:二叉搜索树的最小绝对差

1.1 题目:

给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。

差值是一个正数,其数值等于两值之差的绝对值。

示例 1:

输入:root = [4,2,6,1,3]
输出:1

示例 2:

输入:root = [1,0,48,null,null,12,49]
输出:1

提示:

  • 树中节点的数目范围是 [2, 104]
  • 0 <= Node.val <= 105

1.2 思路

题目虽然说求任意两个不同的节点的差值,但很容易发现,排序以后,只需要比较两个相邻节点的差值即可。

1.3 题解:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {// 用列表记录二叉树节点的值List<Integer> list = new ArrayList<>();public int getMinimumDifference(TreeNode root) {recursion(root);// 调用库方法排序Collections.sort(list);// 因为由题,该二叉树最少两个节点int targrt = list.get(0) - list.get(1);if(targrt < 0) {targrt = -targrt;}// 排序以后只需要比较两个相邻的元素的差值for(int i = 0; i < list.size() - 1; i++) {int diff = list.get(i) - list.get(i + 1);if(diff < 0) {diff = -diff;}targrt = targrt > diff ? diff : targrt;}return targrt;}private void recursion(TreeNode node) {if(node == null) {return;}list.add(node.val);recursion(node.left);recursion(node.right);}
}

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

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

相关文章

QT5记录 QHBoxLayout ScrollArea导致QLabel重新计算位置导致内容显示不全

先给QLabel 固定高度 # 这里让背景框适配聊天框font_metrics QFontMetrics(font)rect font_metrics.boundingRect(QRect(0, 0, self.width(), 1920), Qt.TextFlag.TextWordWrap,text)newWidth rect.width() 40if rect.width() < 800:self.setMaximumWidth(newWidth)self…

python中pip源配置

文章目录 1、前言2、pip下载源配置 1、前言 conda环境的源配置&#xff0c;相关博客有很多&#xff0c;这里不再赘述。在我使用梯子后&#xff0c;使用pip进行库安装&#xff0c;总是出现错误情况&#xff0c;如下所示&#xff1a; 2、pip下载源配置 因此&#xff0c;在这里进…

多模态:DetCLIPv3解析

文章目录 前言一、介绍二、方法2. Open vocabulary detector2.1 encoder2.2 decoder 3. Object captioner 三、数据工程1. Auto-annotation data pipeline 四、训练策略五、实验总结 前言 目前多模态目标检测逐渐成为检测领域的主要发力方向&#xff0c;从最初的检测大模型gro…

这个桌面插件真的酷!该有的都有了!改造桌面必备神器

这个桌面插件真的酷&#xff01;该有的都有了&#xff01;改造桌面必备神器。一个好用的桌面插件可以给我们提供很多的方便&#xff0c;给自己桌面打扮一下&#xff0c;定制一个自己喜欢的桌面插件&#xff0c;让桌面变得更美观实用&#xff01; 如何给桌面添加一个实用的插件&…

编译器基础介绍

随着深度学习的不断发展&#xff0c;AI 模型结构在快速演化&#xff0c;底层计算硬件技术更是层出不穷&#xff0c;对于广大开发者来说不仅要考虑如何在复杂多变的场景下有效的将算力发挥出来&#xff0c;还要应对 AI 框架的持续迭代。AI 编译器就成了应对以上问题广受关注的技…

安装破解激活pycharm

装pycharm之前先装python 激活方式版本不能过新&#xff0c;要22年1月及其之前的版本&#xff0c;下拉找到对应版本的专业版 Other Versions - PyCharmGet past releases and previous versions of PyCharm.https://www.jetbrains.com/pycharm/download/other.html 2.下载电脑…

Transiting from CUDA to HIP(三)

一、Workarounds 1. memcpyToSymbol 在 HIP (Heterogeneous-compute Interface for Portability) 中&#xff0c;hipMemcpyToSymbol 函数用于将数据从主机内存复制到设备上的全局内存或常量内存中&#xff0c;这样可以在设备端的内核中访问这些数据。这个功能特别有用&#x…

【qiankun】使用总结

主应用 主应用使用的技术栈&#xff1a;Angular 18 Antd 微应用 微应用使用的技术栈&#xff1a;React 18 Antd 创建子应用 // 安装angular CLI&#xff08;如果本地已安装可忽略&#xff09; npm install -g angular/cli// 创建子应用 ng new my-app-name配置子应用 安…

保姆级教程:Dupay从注册到充值开卡全过程,可开GPT Plus、可绑定GPT充值API余额

前言 想要购买GPT Plus&#xff0c;或者给GPT充值&#xff0c;绑定国内visa信用卡&#xff0c;会被拒&#xff0c;于是便问问度娘&#xff0c;找到了一篇关于注册虚拟卡的教程&#xff0c;搬过来顺便修改下&#xff01; 应用场景 1、Depay Master Visa卡支持绑定宝、微、美外…

软件测试基础知识 + 面试理论(超详细!)

一、什么是软件&#xff1f; 软件是计算机系统中的程序和相关文件或文档的总称。 二、什么是软件测试&#xff1f; 说法一&#xff1a;使用人工或自动的手段来运行或测量软件系统的过程&#xff0c;以检验软件系统是否满足规定的要求&#xff0c;并找出与预期结果之间的差异…

【网络安全】服务基础第一阶段——第十一节:Windows系统管理基础----PKI技术与应用

目录​​​​​​​ 一、加密技术 1.1 基本保密通信模型 1.2 密码学发展 1.2.1 古典密码学&#xff08;1949年前&#xff09; 1.2.2 近代密码学&#xff08;1949&#xff5e;1975年&#xff09; 1.2.3 现代密码学&#xff08;1976年以后&#xff09; 1.3 古典密码 1.3.…

月考成绩如何私密发布?教程来啦!

月考结束&#xff0c;老师们总是忙得不可开交。需要将每一份成绩单仔细核对&#xff0c;然后逐一私信给每位学生的家长。这个过程不仅耗时耗力&#xff0c;而且容易出错。家长们也常常因为等待成绩而焦虑不安。但现在有了一种更高效、更私密的方法来发布成绩——易查分小程序。…

GatewayWorker框架的详解和应用

一、介绍 1. 简介 GatewayWorker基于Workerman开发的一个项目框架&#xff0c;用于快速开发TCP长连接应用&#xff0c;例如app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等等 GatewayWorker使用经典的Gateway和Worker进程模型。Gateway进程负责维持客户端连接…

烟雾报警器可以节能与守护并存吗?| 合宙功耗分析仪Air9000P实测

有多少人跟我一样&#xff0c;每次抬头看到天花板上那个长年累月默默站岗的烟雾报警器&#xff0c; 总会想&#xff1a;它真的在工作吗&#xff1f;电量到底能撑多久呢&#xff1f; 不如&#xff0c;动手测一测功耗&#xff01; 烟雾报警器通过内置的传感器实时感知环境中的烟…

Vue3安装Element Plus

文章目录 安装使用包管理器安装配置&#xff1a;完整引入按需引入&#xff1a; 使用&#xff1a; 以下将参考Element Plus官网 一个 Vue 3 UI 框架 | Element Plus (element-plus.org)进行 安装 在创建好的项目文件控制台下安装&#xff1a; 使用包管理器 我们建议您使用包…

UE4_后期处理_后期处理材质及后期处理体积二

效果&#xff1a; 步骤&#xff1a; 1、创建后期处理材质,并设置参数。 2、回到主界面&#xff0c;找到需要发光的物体的细节面板。 渲染自定义深度通道&#xff0c;默认自定义深度模具值为10&#xff08;需要修改此值&#xff0c;此值影响物体的亮度&#xff09;。 3、添加…

git clone 别人的项目上传到自己的Gitee或者github仓库

git clone别人的项目 git clone https://github.com/wohuweixiya/yft-design.git 进入该项目内&#xff0c;删除原有的.git信息 rm -r .git 初始化.git git init 将本地代码添加到仓库 git add . git commit -m "提交仓库说明" Github上新建一个和这个clone下来…

AI生产力工具暑期迎来大爆发 极光数据:夸克新增用户规模领先

9月3日&#xff0c;极光旗下月狐数据发布《AI生产力工具暑期发展报告》。数据显示&#xff0c;AI生产力工具在用户侧呈现高速增长态势&#xff0c;总体月活跃用户数量达1.7亿。其中&#xff0c;夸克APP实现暑期新增用户数量行业第一&#xff0c;凭借大模型、数据、场景等优势&a…

netty之实现同步调用

写在前面 源码 。 本文看下netty如何实现同步调用&#xff0c;netty本身是不具备这种能力的&#xff0c;但是我们可以结合juc包的相关工具类来让其具备这种能力。接下来就一起看下吧&#xff01;&#xff01;&#xff01; 1&#xff1a;server 请求和响应对象 package com.…

算法笔试-编程练习-M-01-24

t这套题&#xff0c;偏向灵活&#xff0c;更多的考察了数学、贪心 一、质因数 题目描述 小乖对 gcd (最大公约数) 很感兴趣, 他会询问你t次。 每次询问给出一个大于 1 的正整数 n, 你是否找到一个数字m(2 ≤m ≤ n)&#xff0c;使得 gcd(n,m)为素数. 注&#xff1a;原题为给…