代码编织梦想

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

力扣题目链接:https://leetcode.cn/problems/minimum-absolute-difference-in-bst/

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

 

注意:本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同

方法一:中序遍历

首先需要明白二叉搜索树的性质:

对于二叉搜索树的每个节点:

  1. 左子树上的节点都小于(或等于)根节点
  2. 右子树上的节点都大于(或等于)根节点

因此,我们只需要中序遍历一遍二叉搜索树,遍历过程中,访问的节点的值的顺序就是非递减的。

这样,“树中任意两不同节点值之间的最小差值”就转换为了“遍历过程中后一个节点与前一个节点的差值的最小值”

我们使用一个变量 l a s t N u m lastNum lastNum记录“上一个节点”的值,再使用一个变量 a n s ans ans记录“不同节点的最小差值”,遍历过程中不断更新上述两变量,遍历结束后 a n s ans ans即为答案。

  • 时间复杂度 O ( n ) O(n) O(n),其中 n n n是二叉树中节点的个数
  • 空间复杂度 O ( n ) O(n) O(n),主要空间复杂度来源是递归

AC代码

C++

class Solution {
private:
    int lastNum = -1e7;
    int ans = 1e7;

    void dfs(TreeNode* root) {
        if (!root)
            return;
        dfs(root->left);
        // printf("root->val = %d, lastNum = %d\n", root->val, lastNum);  //********
        ans = min(ans, root->val - lastNum);
        lastNum = root->val;
        dfs(root->right);
    }
public:
    int getMinimumDifference(TreeNode* root) {
        dfs(root);
        return ans;
    }
};

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/127997530

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Tisfy/article/details/127997530

python-leetcode-1200. 最小绝对差-爱代码爱编程

题目描述: 给你个整数数组 arr,其中每个元素都 不相同。 请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。 示例 1: 输入:arr = [4,2,1,3] 输出:[[1,2],[2,3],[3,4]] 示例

530. 二叉搜索树的最小绝对差 中序遍历-爱代码爱编程

530. 二叉搜索树的最小绝对差 难度:简单 利用二叉搜索树的性质,对二叉搜索树进行中序遍历,得到的结果是一个递增序列。每次记录下前一个的pre 中序遍历,根的前一个元素是左孩子,右孩子的前一个是根题目描述解题思路 整体就是按照中序遍历,记录前一个元素,然后更新最小值 /** * Definition for a binary tree node.

给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值-爱代码爱编程

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ cl

找出给定的n个数中的最大值和最小值_「算法」求二叉搜索树任意两个节点差的最小值-爱代码爱编程

给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值。 示例: 输入: root = [4,2,6,1,3,null,null] 输出: 1 解释: 注意,root是树节点对象(TreeNode object),而不是数组。 给定的树 [4,2,6,1,3,null,null] 可表示为下图: 最小的差值是 1,

python绝对中位差_如何得到两个数的绝对差?-爱代码爱编程

您可以使用$((...))语法在shell中直接执行简单的整数运算。在function abs_diff { local diff diff=$(($1 - $2)); if [ $diff -lt 0 ] then diff=$((-$diff)) fi echo $diff } 使用三元?运算符,它可以更简洁地写成单个表达式。在

LeetCode 783. 二叉搜索树节点最小距离-爱代码爱编程

题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 注意:本题与 530:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 相同 示例 1: 输入:root = [4,2,6,1,3] 输出:1 示例 2: 输入:roo

二叉树算法题(17)二叉搜索树的最小绝对差-爱代码爱编程

目录 二叉搜索树的最小绝对差 描述 示例 方法:递归 二叉搜索树的最小绝对差 描述 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 示例 输入:    1     \      3     /    2 输出: 1 解释:最小绝对差为 1,其中 2 和 1 的差的绝对值为 1

【二叉树】二叉搜索树的最小绝对差-爱代码爱编程

0x00 题目 给你一棵所有节点为非负值的【二叉搜索树】,请你计算树中任意两节点的【差】的绝对值的【最小值】。 0x01 思路 二叉搜索树【中序遍历】是一个【升序】数组,可知,最小值只可能是相邻节点之差。 0x02 解法 语言:Swift 树节点:TreeNode public class TreeNode { public var

二叉搜索树的最小绝对差,leetcode习题-爱代码爱编程

二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 输入:root = [4,2,6,1,3] 输出:1 输入:root = [1,0,48,null,null,12,49] 输出:1 public int getMinimumDiffere

530. 二叉搜索树的最小绝对差 (Python 实现)-爱代码爱编程

题目: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root = [4,2,6,1,3] 输出:1 示例 2: 输入:root = [1,0,48,null,null,12,49] 输出:1 代码: # De

二叉树前序、后序、中序遍历、查找最大及最小结点-爱代码爱编程

题目 构建二叉树并实现前序、后序、中序遍历,查找最大结点及最小结点解法 构建二叉树public class BSTNode<T extends Comparable<T>> { T key; BSTNode<T> left; BSTNode<T> right; BSTNod

力扣:530.二叉搜索树的最小绝对差-爱代码爱编程

力扣:530.二叉搜索树的最小绝对差代码随想录 题目: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 我的开始思路: 差值是一个正数,其数值等于两值之差的绝对值。 三个节点,两个差值。选取更小的然后记录。这种还是会出问题。因为4与3是挨得最近的不是2与4,排列顺序是432,所以这种方法不行,首先排序然后再算差值,

​LeetCode刷题实战530:二叉搜索树的最小绝对差-爱代码爱编程

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家聊的问题叫做 二叉搜索树的最小绝对差,我们先来看题面: https://leetcode-cn.com/problems/minimum-absol

二叉搜索树的最小绝对差 python(leetcode530)_歌者and贰向箔的博客-爱代码爱编程

530二叉搜索树的最小绝对差 看见BST的最小xx二叉树有序,在二叉搜索树上求最值,求差值,想成在有序数组上求最值、求差值做法1先由中序遍历得到数组,再遍历一遍数组做法2中序遍历时直接计算  class Solution: def getMinimumDifference(self, root: TreeNode) -> int:

530. 二叉搜索树的最小绝对差_小杜在学习的博客-爱代码爱编程

530. 二叉搜索树的最小绝对差 每日几道leetcode刷刷题!传送门 题目描述 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 代码 class Solution: def getMinimumDifference(self,

leetcode.530. 二叉搜索树的最小绝对差_chamberlain t的博客-爱代码爱编程

530. 二叉搜索树的最小绝对差 难度:easy     思路同98. 验证二叉搜索树,通过中序遍历转化成数组,再取最小差即可; class Solution { private int result = Integer.MAX_VALUE; // 记录前一个节点 private int pre = -1;

【每日一题 7.11】二叉搜索树的最小绝对之差-爱代码爱编程

开始之前先给自己打个鸡血吧: A journey of a thousand miles begins with a single step. 千里之行始于足下。 题源:https://leetcode.cn/p

二叉搜索树的最小绝对差_二叉搜索树的值只差的最小值-爱代码爱编程

二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root = [4,2,6,1,3] 输