[抄题]:

Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes.

Example:

Input:1\3/2Output:
1Explanation:
The minimum absolute difference is 1, which is the difference between 2 and 1 (or between 2 and 3).

[暴力解法]:

时间分析:

空间分析:

[奇葩输出条件]:

[奇葩corner case]:

[思维问题]:

基础弱到忘了二叉树的traverse怎么写了,还以为要输出到array

[一句话思路]:

先初始化为MAX_VALUE,再按标准格式写

[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

[画图]:

[一刷]:

  1. traverse函数里面切勿定义变量,会导致重复赋值出错。以前错了没注意
  2. 四则运算的对象也要满足非空not null 的基本条件

[二刷]:

[三刷]:

[四刷]:

[五刷]:

[五分钟肉眼debug的结果]:

[总结]:

先初始化为MAX_VALUE,再按标准格式写

[复杂度]:Time complexity: O(n) Space complexity: O(1) 没有额外空间

[英文数据结构或算法,为什么不用别的数据结构或算法]:

[关键模板化代码]:

左中右

getMinimumDifference(root.left);if (prev != null) {min = Math.min(min, root.val - prev);}prev = root.val;getMinimumDifference(root.right);

[其他解法]:

[Follow Up]:

不是BST,用treeset,复杂度都是lgn,可以取出任何一个元素

[LC给出的题目变变变]:

[代码风格] :

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {int min = Integer.MAX_VALUE;TreeNode prev = null;public int getMinimumDifference(TreeNode root) {//corner caseif (root == null) {return min;}//in-order traversal
        getMinimumDifference(root.left);if (prev != null) {//only deletable if not nullmin = Math.min(min, root.val - prev.val);}//refresh the prevprev = root;getMinimumDifference(root.right);//returnreturn min;}
}

View Code

转载于:https://www.cnblogs.com/immiao0319/p/8565405.html

530.Minimum Absolute Difference in BST 二叉搜索树中的最小差的绝对值相关推荐

  1. [LeetCode] Inorder Successor in BST 二叉搜索树中的中序后继节点

    Given a binary search tree and a node in it, find the in-order successor of that node in the BST. No ...

  2. LeetCode 450 Delete Node in a BST(二叉搜索树中的删除结点)

    问题:给出一个二叉搜索树,删除指定的结点,要求返回删除后的树. 算法思路: 1.删除的结点是叶子结点,则直接删除 2.删除的结点只有一个子结点(左孩子右孩子),则直接用子结点替换 3.删除的结点左右孩 ...

  3. Suzy找到实习了吗 Day 21 | 二叉树进行中:530. 二叉搜索树的最小绝对差,501. 二叉搜索树中的众数,236. 二叉树的最近公共祖先

    530. 二叉搜索树的最小绝对差 题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 .差值是一个正数,其数值等于两值之差的绝对值. solution # Defi ...

  4. 13.<tag-二叉树和BST基础>lt.701. 二叉搜索树中的插入操作0.5

    X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxx lt.701. 二叉搜索树中的插入操作 [案例需求] [思路分析一, 带返回值的递归] [代码实现] ...

  5. [力扣] 501. 二叉搜索树中的众数

    501 二叉搜索树中的众数 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素). 例如: 给定 BST [1,null,2,2], 返回[2]. 提示:如果众数超 ...

  6. 70. Leetcode 701. 二叉搜索树中的插入操作 (二叉搜索树-基本操作类)

    给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树. 返回插入后二叉搜索树的根节点. 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同.注意,可能 ...

  7. 【数据结构与算法】之深入解析“二叉搜索树中的插入操作”的求解思路与算法示例

    一.题目要求 给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value,将值插入二叉搜索树,返回插入后二叉搜索树的根节点,输入数据保证,新值和原始二叉搜索树中的任意节点值都不同. 注意 ...

  8. 701. 二叉搜索树中的插入操作

    给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树. 返回插入后二叉搜索树的根节点. 保证原始二叉搜索树中不存在新值. 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜 ...

  9. leetcode701. 二叉搜索树中的插入操作(dfs)

    给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树. 返回插入后二叉搜索树的根节点. 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同.注意,可能存在多种有效的插入方式,只要树 ...

最新文章

  1. 两道概率题-供大家周末把玩
  2. Dockerfile脚本:CMD与ENTRYPOINT的区别
  3. linux调用信号处理程序后返回,如何在Linux上执行异步信号处理程序?
  4. boost::detail模块实现boost::blank的测试程序
  5. hosts文件中同一个域名两个IP的解析顺序
  6. SAP 产品 UI 里的容器组件的概念和开发概述
  7. 为什么ps图片打开是色块_PS教程 我的PS我做主之山村调色
  8. objective-c 使用NSNumber 将int float long等数据类型加入到数组或字典中
  9. 干货!这可能是最全的IntelliJ IDEA For Mac快捷键说明,建议收藏!
  10. 对话Google全球VP Jay Yagnik:TensorFlow2.0会强化可控性
  11. 自动驾驶_高精地图模型构成
  12. 聚类算法之密度聚类方法
  13. 账户维护账户服务器,win10重装之后卡在账户登录界面怎么办_网站服务器运行维护,win10,账户...
  14. HTML中Form表单的使用
  15. 官网USB读卡器移植(TF卡SDIO模式 + SPI-flash)
  16. 旭凤锦覓虐心 恋只愿共赴鸿蒙,香蜜:锦觅与旭凤4次同床,1次酒醉灵修,1次再续前缘,1次虐心!...
  17. linux-锁屏时间设置
  18. JNLP文件及JWS
  19. 还愁没壁纸?Python爬取5K分辨率高清桌面壁纸
  20. VirtualBox 虚拟机安装Windows10,珍藏版!!!

热门文章

  1. 2018福建省“百越杯”CTF初赛writeup
  2. python列表增删改查_Python列表List增删改查、拷贝
  3. 手机系统要不要更新?来看看这个答案
  4. wecenter 第三方微博登录:你所访问的站点在微博认证失败
  5. 2020年7月内容总结8月计划:
  6. 仿“唯品会”钓鱼网站分析
  7. 匹配颜色、渐变映射、阈值
  8. 小米node2红外_国外媒体测评小米MIX2:存在三大致命缺陷,想不到你是这样的小米...
  9. Python中五个不常见的隐晦用法小结
  10. 【新一配】选股+择时策略组合