• leetcode 530. Minimum Absolute Difference in BST二叉搜索树的最小绝对差 (简单)


    一、题目大意

    给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。

    差值是一个正数,其数值等于两值之差的绝对值。

    示例 1:

    img

    输入:root = [4,2,6,1,3]

    输出:1

    示例 2:

    img

    输入:root = [1,0,48,null,null,12,49]

    输出:1

    提示:

    • 树中节点的数目范围是 [2, 104]

    • 0 <= Node.val <= 105

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/minimum-absolute-difference-in-bst
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    二、解题思路

    这道题给我们一棵二叉搜索树,让我们求任意个节点值之间的最小绝对差。由于BST的左<根<右的性质可知,如果按照中序遍历会得到一个有序数组,那么最小绝对差肯定在相信的两个节点值之之间产生。所以我们的做法就是对BST进行中序遍历,然后当前节点值和之前节点值求绝对差并更新结果res。需要注意的是在处理第一个节点值时,没有前节点所以不能求绝对差。我们用变量pre来表示前节点,将其初始化为-1(节点值不为负数),我们就知道pre是否存在。

    三、解题方法

    3.1 Java实现

    public class Solution {
        public int getMinimumDifference(TreeNode root) {
            int[] res = {Integer.MAX_VALUE};
            int[] pre = {-1};
            inorder(root, pre, res);
            return res[0];
        }
    
        void inorder(TreeNode root, int[] pre, int[] res) {
            if (root == null) {
                return;
            }
            inorder(root.left, pre, res);
            if (pre[0] != -1) {
                res[0] = Math.min(res[0], root.val - pre[0]);
            }
            pre[0] = root.val;
            inorder(root.right, pre, res);
        }
    }
    

    四、总结小记

    • 2022/10/5 有时候生活不一定比工作轻松
  • 相关阅读:
    docker
    20192413宗俊豪汇编语言程序设计学习总结
    20192413宗俊豪 202120222 《网络与系统攻防技术》实验一实验报告
    测试部门目标
    Ubuntu安装/配置Nvim+coc.vim
    nginx反向代理nexus私服
    数据库级别判断数据重复
    使用注解管理spring bean生命周期
    合并两个有序链表
    如何查找对应的JVM参数
  • 原文地址:https://www.cnblogs.com/okokabcd/p/16755440.html
Copyright © 2020-2023  润新知