题目: 给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值。
示例:
思路分析:
一、题中给定了BST,故由BST树的特性可知对其进行中序遍历可以得到一个升序数列。
二、而最小值必定出现在升序数列中前后无缝衔接的两数之间,不可能跨数取得最小值,故将两树相减后的值存入新数列之中,最后结果进行返回即可。
Code
class Solution {
List<Integer> list = new LinkedList<>();
List<Integer> list2 = new LinkedList<>();
public int minDiffInBST(TreeNode root) {
helper(root);
int size = list.size();
for (int i = 1; i < size - 1; i++) {
int a = list.get(i) - list.get(i - 1);
list2.add(a);
}
res = Collections.min(list2);
return res;
}
public vlid inOrder(TreeNode root) {
if (root == null) {
return;
}
inOrder(root.left);
list.add(root.val);
inOrder(root.right);
}
}