530. 二叉搜索树的最小绝对差
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数,其数值等于两值之差的绝对值。
示例 1:
输入:root = [4,2,6,1,3]
输出:1
示例 2:
输入:root = [1,0,48,null,null,12,49]
输出:1
思考
注意题目,此二叉树为二叉搜索树 ,其中序遍历为有序序列。
我们需要获取此二叉树任意节点的之差绝对值的最小值,只需要根据顺序进行比较从而获取最小值即可。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public int getMinimumDifference(TreeNode root) {
int[] mini= new int[1];
if(root.left!=null)
mini[0]=root.val - root.left.val;
else mini[0] = root.right.val - root.val;
int[] upVal=new int[1];
int[] start=new int[1];
start[0] = -1;
inOrder(root,mini,upVal,start);
return mini[0];
}
private void inOrder(TreeNode root, int[] mini, int[] upVal, int[] start) {
boolean flag = true;
if(root.left!=null){
inOrder(root.left,mini,upVal,start);
}
if(start[0]==-1) {
upVal[0] =root.val;
start[0] = 1;
}
else {
int temp = root.val-upVal[0];
if(mini[0]>temp){
mini[0] = temp;
}
upVal[0] = root.val;
}
if(root.right!=null){
inOrder(root.right,mini,upVal,start);
}
}
}