树与图简单1 种解法

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

返回二叉搜索树任意两个不同节点值之间的最小绝对差。

#二叉搜索树#中序遍历#深度优先搜索

解题主线

01

中序序列有序,最小差一定出现在相邻元素之间。

解法 1中序相邻比较

递归中序遍历,用方法内 holder 保存前驱和当前最小差。

时间复杂度

O(n)

空间复杂度

O(h)

530. 二叉搜索树的最小绝对差 · 中序相邻比较
import java.util.*;

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int val) {
        this.val = val;
    }
}

class Solution {
    public int getMinimumDifference(TreeNode root) {
        TreeNode[] previous = new TreeNode[1];
        int[] answer = {Integer.MAX_VALUE};
        inorder(root, previous, answer);
        return answer[0];
    }

    private void inorder(TreeNode node, TreeNode[] previous, int[] answer) {
        if (node == null) return;
        inorder(node.left, previous, answer);
        if (previous[0] != null) {
            answer[0] = Math.min(answer[0], node.val - previous[0].val);
        }
        previous[0] = node;
        inorder(node.right, previous, answer);
    }
}

递归中序遍历,用方法内 holder 保存前驱和当前最小差。

边界与易错点

  • 前驱节点和最小值不能作为未重置的实例状态。
  • 至少两个节点是题目约束,方法可据此返回最终最小值。
整理来源

由旧仓库源码复核、去重并整理;展示代码已按 Java 21 语义修正明显问题。

leetcode/src/main/java/tree/Q530_getMinimumDifference.java