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

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

  • 题目描述
  • 解题思路
  • 执行结果
leetcode 530. 二叉搜索树的最小绝对差.


题目描述

  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

方法1 :中序遍历

  1. 二叉搜索树其实就类似于一个排序好的一组数据,左节点的数据大于根节点的数据大于右节点的数据,我们对其进行中序遍历就可以得到一组由小到大的递增数据,我们只需要判断这组数据中差值最小的就可以得到最小绝对差值

  2. 我们可以用递归的方法先左后中最后右的顺序遍历树从而实现二叉树的中序遍历

  3. 最后判断相邻两个数之间的差值,取最小的差值作为返回值

  • 时间复杂度(O(n))
  • 空间复杂度(O(1))

执行结果

法1

func getMinimumDifference(root *TreeNode) int {
 prev, minDiff := -1, math.MaxInt32
 traverse(root, &prev, &minDiff)
 return minDiff
}

func traverse(node *TreeNode, prev *int, minDiff *int) {
 if node == nil {
  return
 }
 traverse(node.Left, prev, minDiff) //左节点
 if *prev != -1 {                   //处理跟节点
  if *minDiff > node.Val-*prev {
   *minDiff = node.Val - *prev
  }
 }
 *prev = node.Val
 traverse(node.Right, prev, minDiff) //处理右节点
}

执行结果: 通过 显示详情 查看示例代码 添加备注

执行用时: 8 ms , 在所有 Go 提交中击败了 89.55% 的用户 内存消耗: 6.8 MB , 在所有 Go 提交中击败了 22.48% 的用户 通过测试用例: 189 / 189 炫耀一下:

法2


法3


本文由 mdnice 多平台发布


http://www.kler.cn/a/17517.html

相关文章:

  • qt QKeySequence详解
  • 虚拟机安装Ubuntu 24.04服务器版(命令行版)
  • C++ 数组与结构 编程练习
  • win32 / WTL 开发多线程应用,子线程传递大对象给UI线程(主窗口)的方法
  • 词嵌入方法(Word Embedding)
  • 笔记 | image may have poor performance,or fail,if run via emulation
  • 《互联网安全产品漏洞管理规定》
  • 【Linux Network】网络编程套接字
  • 轻松掌握在已有K8s环境上安装KubeSphere
  • 【五一创作】Qt quick基础1(包含基本元素Text Image Rectangle的使用)
  • HTTP加密
  • 身份鉴别解读与技术实现分析(1)
  • 【Linux】多路转接--select、poll、epoll,非阻塞等待
  • 超大excel文件读,避免内存溢出
  • 【华为OD机试真题 Python】简单的解压缩算法 (100%通过)
  • node之Express
  • 【GAMES101】05 Rasterization(Triangles)
  • 【初学人工智能原理】【4】梯度下降和反向传播:能改(下)
  • 算法设计与分析期末复习
  • 判断密码判断密码
  • 删除游戏-类似打家劫舍
  • Canvas和SVG有什么区别?
  • java基础知识——26.反射
  • 架构集群部署
  • 深度学习 -- PyTorch学习 torchvision工具学习 Transforms模块 Normalize用法
  • Db2 hardcode一个CTE