刷刷刷 Day 21 | 530. 二叉搜索树的最小绝对差

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

LeetCode题目要求

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

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

图

示例

输入:root = [4,2,6,1,3]
输出:1
解题思路

根据二叉搜索树的特性,最小差相当于在排序数组中找最小差值,那么可通过中序遍历

上代码

class Solution {
    private int min = Integer.MAX_VALUE;
    private TreeNode pre;
    public int getMinimumDifference(TreeNode root) {
        // 由于是搜索二叉树,那么最小差一定是在 相当于在排序数组中找最小差值,那么可通过中序遍历
        if (root == null) {
            return 0;
        }
        // 中序遍历 左中右
        inorder(root);

        return min;
    }

    public void inorder(TreeNode node) {
        if (node == null) {
            return;
        }

        // 左
        inorder(node.left);
        // 中
        if (pre != null) {
            min = Math.min(node.val - pre.val, min);
        }
        pre = node;
        // 右
        inorder(node.right);
    }
}

附:学习资料链接

posted @ 2023-01-24 23:18  blacksonny  阅读(12)  评论(0编辑  收藏  举报