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

news2024/9/27 5:57:01

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.coloradmin.cn/o/2104567.html

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

相关文章

TCP协议必懂内容

网络分层结构 计算机的网络体系分为三种&#xff0c;OSI网络分层结构&#xff0c;TCP/IP 五层模型&#xff0c;TCP/IP四层模型。 TCP/IP五层模型&#xff1a; 应用层&#xff1a;为应用程序提供交互服务&#xff0c;在应用层中有较多的协议&#xff0c;较为出名的是&#xff…

Java八股文总结三

JVM部分 一、JVM是由哪几部分组成的 类加载器运行时数据区执行引擎本地库接口 说一下运行时数据区的组成&#xff1a; 本地方法栈、虚拟机栈、堆区、程序计数器、方法区。 虚拟机栈帧的组成&#xff1a; 每个栈帧包含五部分&#xff0c;分别包括局部变量表、操作数栈、动…

【鸿蒙开发从0到1 day06】

一.视口 视口&#xff1a;用来约束html&#xff0c;html和设备的大小进行适配 (注释视口) 添加视口 二倍图 概念:设计稿里面每个元素的尺寸的倍数 作用:防止图片在高分辨率屏幕下模糊失真 可以使用pxcook 如果我们的原图大小是设计图的两倍,可以使用pxCook去原图抓取到设…

墨刀基础篇(一):全局事件和动效

一&#xff1a;全局事件 全局事件是针对于整个页面设置的&#xff0c;而不是针对页面中的某个组件设置的。 事件 手势事件&#xff1a; 单击左滑、又滑、上滑、下滑、长按、双击摇一摇 鼠标事件&#xff1a; 单击、双击长按鼠标移入、鼠标移出右键 定时事件 定时器 行为 …

C++11第一弹:简介 | 统一的列表初始化 | 声明

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

盘点2024年最常用的透明加密软件!TOP10排行榜

随着数字化生活的深入&#xff0c;数据安全成为每个人和企业都不可忽视的重要议题。透明加密软件因其在保障数据安全的同时&#xff0c;不影响用户日常操作的特性&#xff0c;越来越受到人们的青睐。以下是2024年最常用的透明加密软件TOP10排行榜&#xff0c;它们以卓越的性能和…

Vue3 使用 富文本编辑器 wangeditor/editor-for-vue 配置详解

Vue3 使用 富文本编辑器 wangeditor/editor-for-vue 配置详解 先上官网地址 wangEditor 5 点这里 wangeditor 主要API 配置功能栏 let toolbarConfig {toolbarKeys: [ "bold", // 字体加粗 "underline", // 字体下划线 "italic", // 字体斜体…

一款用于分析java socket连接问题的工具

network-tools 介绍 network-tools基于sun jdk、Oracle jdk开发&#xff0c;拦截基于java socket请求&#xff0c;它包括 ​ http 客户端 ​ jdbc 客户端 ​ mq 客户端 ​ redis 客户端 目前提供如下功能&#xff1a; ​ 最近端点连接情况 ​ 最近与远程端点连接情况&am…

公寓项目(尚庭公寓笔记)

公寓项目 课程介绍项目概述移动端业务功能后台管理系统业务功能-公寓管理后台管理系统业务功能-租赁功能后台管理系统业务功能-系统管理&用户管理核心业务功能技术概述 项目开发流程项目原型数据库设计理论ER模型数据库设计流程 数据库设计实操概念模型逻辑模型公寓信息房间…

sse fetch-event-source插件的使用

sse简单介绍https://blog.csdn.net/weixin_42400404/article/details/141895877?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22141895877%22%2C%22source%22%3A%22weixin_42400404%22%7D fetch-event-source gitHub地址 通信…

快速构建 AI 应用的利器:Python 库 Mesop

在当今这个 AI 技术飞速发展的时代&#xff0c;开发者们总是希望能够更快、更便捷地构建 AI 应用程序。今天&#xff0c;我要给大家介绍一个由 Google 推出的 Python 库——Mesop。它的出现&#xff0c;让我们能够轻松地搭建高效的 AI 应用。 Mesop 是什么&#xff1f; Mesop …

C#如何使用外部别名Extern alias

说到 extern 关键字&#xff0c;只是很简单告诉大家用来做区分两个不同 dll 有相同的命名空间和类&#xff0c;可以使用这个关键字。 在遇到了存在两个 dll 都有相同的命名空间&#xff0c;而且有相同的类的时候&#xff0c;如何同时使用这两个 dll 的类。 这里有两个库 Jall…

4.4SQL注入之布尔盲注

SQL注入之布尔盲注1.什么是布尔盲注&#xff1f; Web的页面的仅仅会返回True和False。那么布尔盲注就是进行SQL注入之后然后根据页面返回的True或者是False来得到数据库中的相关信息。 返回False时&#xff1a; 返回True时&#xff1a; 2.如何进行布尔盲注&#xff1f; 注入…

把空格对应的表头拼接起来

某Excel表格有表头&#xff0c;部分数据格为空。 ABCDEF1stat Astat Bstat Cstat Dstat Estat F2113XX4XXXX56XXX7XXXX8XX 要求处理每行&#xff0c;把空数据格对应的表头用斜线拼起来。 H1Summary2stat B/stat C/stat E/stat F/3stat C/stat D/stat F/4stat B/stat E/5stat…

冒泡排序及qsort函数

文章目录 前言一、冒泡排序二、qsort函数 前言 冒泡排序是一种简单的排序算法&#xff0c;它重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的&#xff0c;直到没有再需要交换的元素&#xff…

软考证书补贴动不动就好几万,真的能领到吗?

取得软考证书在许多地区都有补贴政策&#xff0c;从几千至二十几万元不等。有些考生会好奇这些补贴是真的能领到吗&#xff0c;为此&#xff0c;小希搜集了一些例子证明是可以领到的&#xff0c;供大家参考。 1、奖励名单里的软考证书 在一些地区公示的奖励名单里&#xff0c;…

SpringBoot使用入门

springboot基础 1. 项目创建(1) idea自动创建(2) 手动创建①创建普通maven项目② 引入springboot依赖 2. 配置文件使用(1) 配置文件格式(2) 配置文件书写(3) 值的获取 3. bean的管理(1) bean的扫描(2) bean的注册Bean注解Import注解 自定义组合注解减少配置类注解(3) 条件注册b…

vue3-scroll-seamless 大屏无缝滚动

npm install vue3-scroll-seamless --save //或者 yarn add vue3-scroll-seamless页面中引入 <template><div class"safety_item"><SoftwareHead title"高危及以上组件漏洞TOP10"></SoftwareHead><div class"table"…

python学习12:对txt/text类型的文件进行读写

1.对txt类型的文件进行读写 1&#xff09;对text文件的操作 打开文件-读/写文件-关闭文件 1.1)打开文件 open() 1.2)读/写文件 读: read(),readline(),rendlines() 写:write() 1.3)关闭文件 close() # 案例1:(读):moder # filename test004.txt # 同一个文件夹 filename rD:…

Unity之获取Avpro视频画面并在本地创建缩略图

一、效果 功能需求&#xff1a;获取StreamingAssets文件夹下的所有视频&#xff08;包含其子文件夹&#xff09;&#xff0c;获取指定时间的视频画面&#xff0c;然后将图片保存到本地磁盘中。 二、关于Avpro的事件监听 当指定视频时间进度时会触发FinishedSeeking&#xff0c…