题目内容
给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值。
解题思路
其实就是对数排序,然后对相邻的元素进行相减,取出最小的差。
代码
class Solution {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
List<Integer> list = new ArrayList<>();
public int minDiffInBST(TreeNode root) {
if (root == null) {
return -1; //树为空,返回-1
}
inorder(root);
return findMin(list);
}
public void inorder(TreeNode root) {
TreeNode cur=root;
if (cur==null)
return;
inorder(cur.left);
list.add(cur.val);
inorder(cur.right);
}
public int findMin(List<Integer> list) {
int min = Integer.MAX_VALUE;
for (int i = 1; i <= list.size() - 1; i++) {
int sub = list.get(i) - list.get(i - 1);
if (sub < min) {
min = sub;
}
}
return min;
}
}