package 二叉树.二叉搜索树;
/**
* https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/
* @author Huangyujun
*
*/
public class _783_二叉搜索树节点最小距离 {
//找到二叉树中两个值的差最小(拿到数据~遍历),如何加快拿到“最小的”数据,先将拿到的数据进行排序处理(咱选择升序降序都ok)
//经过处理(升序)的数据,可以直接两个连续挨着近的数据可能是最小
//过程的数据要注意一个细节:差,是从拥有了两个数据开始才诞生的,但是遍历一开始才有一个数据,咱需要先记录下来(作为第一个数据,留个下个数据比较操作之类的)
int ans = 0;
int pre = 0;
public int minDiffInBST(TreeNode root) {
ans = Integer.MAX_VALUE;
pre = -1;
inorder(root);
return ans;
}
public void inorder(TreeNode root) {
if(root == null) return;
inorder(root.left);
//拿到数据,
if(pre == -1) {
pre = root.val;
}else {
ans = Math.min(ans, root.val - pre);
pre = root.val;
}
inorder(root.right);
}
}