代码随想录——二叉搜索树的最小绝对差(Leetcode530)

题目链接
在这里插入图片描述

层序遍历

/*** 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 {public int getMinimumDifference(TreeNode root) {ArrayList<Integer> array = new ArrayList<>();Deque<TreeNode> queue = new LinkedList<TreeNode>();if(root == null){return 0;}queue.offer(root);while(!queue.isEmpty()){TreeNode node = queue.poll();array.add(node.val);if(node.left != null){queue.offer(node.left);}if(node.right != null){queue.offer(node.right);}}// 使用 Collections.sort(array) 对 ArrayList 进行排序Collections.sort(array);int min = Integer.MAX_VALUE;for(int i = 1; i < array.size(); i++){min = Math.min(min, array.get(i) - array.get(i - 1));}return min;}
}

在 Java 中,不能使用 array.sort() 的原因是 ArrayList 类没有直接提供 sort() 方法。应该使用Collections.sort() 或 List.sort() 方法对列表进行排序。

中序遍历

做麻烦了,二叉搜索树中序遍历可以直接得到有序序列!!!!

/*** 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 {ArrayList<Integer> array = new ArrayList();public int getMinimumDifference(TreeNode root) {traversal(root);if(array.size() < 2){return 0;}int min = Integer.MAX_VALUE;for(int i = 1; i < array.size(); i++){min = Math.min(min,array.get(i) - array.get(i - 1));}return min;}public void traversal(TreeNode root){if(root == null){return;}traversal(root.left);array.add(root.val);traversal(root.right);}
}

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

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

相关文章

if constexpr实现条件编译

#include <iostream>// 利用if constexpr实现了条件编译 template<typename T1, typename T2> void test_func() {if constexpr (std::is_same_v<T1, T2>) {std::cout << "hit stage\n";} else {std::cout << "miss\n";} }i…

Microsoft的Copilot现已登陆Telegram

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

数据结构复习指导之插入排序

文章目录 排序 考纲内容 知识框架 复习提示 1.排序的基本概念 1.1排序的定义 2.插入排序 2.1直接插入排序 2.2折半插入排序 2.3希尔排序 知识回顾 排序 考纲内容 &#xff08;一&#xff09;排序的基本概念 &#xff08;二&#xff09;插入排序 直接插…

多线程基础知识-09

ThreadLocal 是什么 ThreadLocal 是 Java 中的一个类&#xff0c;它提供了线程局部变量的功能。每个 ThreadLocal 对象都维护了一个线程私有的变量副本&#xff0c;不同线程之间无法访问彼此的副本。这样可以保证每个线程都能够独立地操作自己的变量副本&#xff0c;而不会发生…

内网不能访问域名怎么办?

在网络应用中&#xff0c;我们常常遇到内网不能访问域名的问题。这是由于内网环境限制导致的&#xff0c;内网无法直接连接到公网&#xff0c;因而无法访问互联网上的域名。我们可以利用一些特殊技术和工具来解决这个问题。 天联组网技术的应用 天联组网是一种非常受欢迎的解决…

Java实战项目开发的个人技巧分享

前言 笔者目前从事一线 Java 开发今年是第 3 个年头了&#xff0c;从 0-1的 SaaS、PaaS 的项目做过&#xff0c;多租户下定制化开发项目也做过&#xff0c;项目的 PM 也做过... 在实际的开发中积累了一些技巧和经验&#xff0c;包括线上 bug 处理、日常业务开发、团队开发规范…

NetApp财季报告亮点:全闪存阵列需求强劲,云计算收入增长放缓但AI领域前景乐观

在最新的财季报告中&#xff0c;NetApp的收入因全闪存阵列的强劲需求而显著增长。截至2024年4月26日的2024财年第四季度&#xff0c;NetApp的收入连续第三个季度上升&#xff0c;达到了16.7亿美元&#xff0c;较前一年同期增长6%&#xff0c;超出公司指导中值。净利润为2.91亿美…

前端开发:$nextTick()的使用及原理

目录 前言 $nextTick()的概念 $nextTick()的用法和原理 1、$nextTick()用法 2、$nextTick()原理 $nextTick()的具体使用示例 拓展&#xff1a;面试中考察$nextTick()的底层原理 最后 前言 在前端开发中&#xff0c;涉及到JS原生的使用原理是非常重要的知识点&#xff0…

Kafka 消息保留策略及其影响详解

目录 Kafka 消息保留策略及其影响详解消息保留策略超过保留时间的消息删除过程删除过程对正在消费的消息和偏移量的影响不同保留时间设置的区别总结 博客示例题目&#xff1a;详解 Kafka 消息保留策略及其影响消息保留策略超过保留时间的消息删除过程删除过程对正在消费的消息和…

使用pytorch搭建textCNN、BERT、transformer进行文本分类

首先展示数据处理后的类型&#xff1a; 第一列为文本&#xff0c;第二类为标注的标签&#xff0c;数据保存在xlsx的表格中&#xff0c;分为训练集和验证集。 textCNN 直接上整个工程代码&#xff1a; import pandas as pd import numpy as np import torch from torch.util…

springMVC返回对象或List集合时报错 无法解析

报错信息 &#xff1a;No converter found for return value of type: class java.util.ArrayList 原因&#xff1a;没有导入json 所以java在返回对象时解析错误 解决&#xff1a;1、添加所需的依赖&#xff1a;确保在项目的依赖管理中添加了适当的 JSON 库&#xff0c;如 J…

c++函数基础总结

在给出的代码片段中&#xff0c;我们看到两部分内容&#xff1a;一个类定义和一个全局函数声明。让我们逐一分析它们&#xff1a; 类定义&#xff1a; cpp复制代码 class { public: void a(); }; 这个类定义是不完整的&#xff0c;因为它没有类名。但为了说明&#xff0c;我…

Linux开发工具(个人使用)

Linux开发工具 1.Linux yum软件包管理器1.1Linux安装程序有三种方式1.2注意事项1.3如何查看&#xff0c;安装&#xff0c;卸载软件包1.3.1查看软件包1.3.2安装软件包1.3.3卸载软件 2.Linux vim编辑器2.1vim的基本操作2.2vim正常模式命令集2.3vim底行模式命令集2.4vim配置 3.Lin…

金色晚年的温暖旋律

​在小镇的东头&#xff0c;有一座带着些许岁月痕迹的二层小楼。这里住着一位刚刚退休的老人&#xff0c;李大爷。他的退休生活并不像人们想象的那样枯燥无味&#xff0c;反而充满了色彩和活力。 退休后的李大爷并没有选择整日坐在摇椅上晒太阳&#xff0c;而是找到了新的生活…

如何设置eclipse中web.xml 文件的地址

新学了一个项目 &#xff0c;项目结构与平常自己构建的web项目不同 &#xff0c;用eclipse打开之后&#xff0c;eclipse竟然自己创建了一个web.xml 而项目里面原本的web.xml 文件eclipse没有识别出来&#xff0c;导致后来浏览器访问任何路径都报错404 一、修改项目中web.xml的…

Centos7.9环境下安装Keepalived(亲测版)

目录 一、在线安装 二、离线安装 (1)、 下载 (2)、安装依赖包 (3)、解压文件 (4)、编译 (4.1)、进入 keepalived-2.2.8 目录中 (4.2)、安装Keepalived (5)、配置文件修改 (6)、启动 (7)、检查启动状态 (8)、 设置开机自启 (9)、配置从节点 (10)、启动从节点keepalived…

vue3中实现鼠标点击后出现点击特效

一、效果展示 图片下方为效果体验地址 缓若江海凝清光 二、代码 js中&#xff1a; <script setup lang"ts"> window.addEventListener("click", (e: MouseEvent) > {const pointer document.createElement("div");pointer.classLi…

Oracle索引的在线添加方法

在Oracle中&#xff0c;索引的在线添加方法主要是通过使用CREATE INDEX语句时添加ONLINE选项来实现的。以下是关于Oracle索引在线添加方法的详细步骤和要点&#xff1a; 了解在线添加索引的概念&#xff1a; 在线添加索引意味着在创建索引的过程中&#xff0c;其他数据库操作…

头歌数据结构与算法课程设计中-硬币找零

给定n种不同面值的硬币k_i和每种硬币的数量x_i以及一个总金额k,请编写一个程序计算最少需要几枚硬币凑出这个金额k,凑出的方案是什么? 如果凑不出则输出“凑不出” 输入描述: 第一行两个正整数,n和k 然后n行每行两个数k_i和x_i 表示k_i面值的硬币有x_i个,中间以空格分隔 输…

k8s处于pending状态的原因有哪些

k8s处于pending状态的原因 资源不足&#xff1a;集群中的资源&#xff08;如CPU、内存&#xff09;不足以满足Pod所需的资源请求&#xff0c;导致Pod无法调度。 调度器问题&#xff1a;调度器无法为Pod找到合适的节点进行调度&#xff0c;可能是由于节点资源不足或调度策略配置…