import java.util.*; public class Solution { public int minDifference (TreeNode root) { // 初始化 List<Integer> list = new ArrayList<>(); // 获取中序遍历序列 inOrder(root, list); // 计算所有相邻结点的差值 int[] diffs = new int[list.size()-1]; for (int i = 0; i < diffs.length; i++) { diffs[i] = list.get(i+1) - list.get(i); } // 返回差值数组中的最小值 Arrays.sort(diffs); return diffs[0]; } public static void inOrder(TreeNode root, List<Integer> list) { // 预处理 if (root == null) return; // 左根右 inOrder(root.left, list); list.add(root.val); inOrder(root.right, list); } }