当前位置: 首页 > news >正文

530.二叉搜索树的最小绝对差(二叉树算法题)

530.二叉搜索树的最小绝对差

力扣题目链接

给你一个二叉搜索树的根节点 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

算法公开课

《代码随想录》算法视频公开课 (opens new window):二叉搜索树中,需要掌握如何双指针遍历!| LeetCode:530.二叉搜索树的最小绝对差 (opens new window),相信结合视频再看本篇题解,更有助于大家对本题的理解

#思路

题目中要求在二叉搜索树上任意两节点的差的绝对值的最小值。

注意是二叉搜索树,二叉搜索树可是有序的。

遇到在二叉搜索树上求什么最值啊,差值之类的,就把它想成在一个有序数组上求最值,求差值,这样就简单多了。

#递归

那么二叉搜索树采用中序遍历,其实就是一个有序数组。

在一个有序数组上求两个数最小差值,这是不是就是一道送分题了。

最直观的想法,就是把二叉搜索树转换成有序数组,然后遍历一遍数组,就统计出来最小差值了。

/*** 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 {// 用于存储中序遍历结果的列表// 因为是二叉搜索树(BST),中序遍历会得到一个升序序列private List<Integer> list;/*** 计算二叉搜索树中任意两个节点值之间的最小绝对差* 利用 BST 的性质:中序遍历得到升序序列,最小差值一定出现在相邻节点之间** @param root 二叉搜索树的根节点* @return 最小绝对差值*/public int getMinimumDifference(TreeNode root) {list = new ArrayList<>(); // 初始化列表traversal(root);          // 执行中序遍历,将节点值按升序存入 listint result = Integer.MAX_VALUE; // 初始化结果为最大整数值// 遍历中序序列,比较每一对相邻元素的差值,取最小值for (int i = 1; i < list.size(); i++) {result = Math.min(result, list.get(i) - list.get(i - 1));}return result; // 返回最小差值}/*** 中序遍历二叉树(左 -> 根 -> 右)* 将节点值依次添加到 list 中,形成升序序列** @param root 当前遍历的节点*/public void traversal(TreeNode root) {if (root == null) {return; // 递归终止条件:空节点直接返回}traversal(root.left);  // 先遍历左子树list.add(root.val);    // 再访问根节点,将值加入列表traversal(root.right); // 最后遍历右子树}
}

http://www.dtcms.com/a/457322.html

相关文章:

  • 如何解决 pip install -r requirements.txt extras 语法 ‘package[extra’ 缺少 ‘]’ 解析失败问题
  • 青岛网站建设方案辽阳网站建设
  • 磁悬浮轴承中基于位移信号的转子位置与转速估计深度解析摘要
  • 个人和做网站方签合同模板一流的聊城网站建设
  • 什么是UIOTOS?
  • 网站建设书籍论文龙网网络推广软件
  • 蚌埠网站制作公司排名wordpress lazyload
  • Windows中通过wsl运行Ubuntu
  • TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 计算图和 tf.function 简介
  • 怎样理解网站建设与开发这门课郑州妇科医院正规有哪些
  • 使用 C 语言连接 MySQL 客户端(重点)
  • 西安网站建设价格明细网站建设项目合同
  • 中国建设银行密码重置网站邯郸模板建站教程
  • HFish架构深度解析:从蜜罐诱捕到威胁狩猎的完整技术链路
  • 最小栈GO实现
  • 福田欧辉是国企吗做百度手机网站优化点
  • npm 扩展vite
  • 和15岁女儿做很舒服网站最新网页版传奇
  • 01.MMDetection3D训练
  • 手机 网站制作什么网站资源多
  • C++之日期类的实现
  • 构建AI智能体:五十七、LangGraph + Gradio:构建可视化AI工作流的趣味指南
  • Create/Assemble/Link x64 Windows
  • 网站建设与管理案例教程第三版答案中国货源大全网
  • 织梦建网站建设收费网站
  • Delphi字段值含有空格
  • 【第五章:计算机视觉-项目实战之生成式算法实战:扩散模型】2.CV黑科技:生成式算法理论-(3)经典扩散模型DDPM算法流程讲解
  • 牛客算法_哈希
  • Product Hunt 每日热榜 | 2025-10-08
  • 重庆建站公司官网国外有名的网站