二叉搜索树的最小绝对差
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数,其数值等于两值之差的绝对值。
输入:root = [4,2,6,1,3]
输出:1
输入:root = [1,0,48,null,null,12,49]
输出:1
public int getMinimumDifference(TreeNode root){
Stack<TreeNode> stack = new Stack<>();
TreeNode pre = null;
int result = Integer.MAX_VALUE;
//进行中序遍历
while (!stack.isEmpty() || root != null){
if(root != null){
stack.push(root);
root = root.left;
}else {
TreeNode temp = stack.pop();
if (pre != null){
result = Math.min(result,temp.val-pre.val);
}
pre = temp;
root = temp.right;
}
}
return result;
}
//思路:跟我之前发的文章,验证二叉搜索树的思路差不多,用中序遍历
来进行遍历,最后再加入判断条件。
因为二叉搜索树节点都是有序的所以其实就是在遍历一个有序数组,
只需遍历相邻两个节点做差即可。