题解 | #二叉搜索树最小差值#
二叉搜索树最小差值
https://www.nowcoder.com/practice/f8ac976b49bd450887b9281f315186c7
int i=0;
int temp;
int min=0;
public int minDifference (TreeNode root) {
// write code here
minDifferenceOne(root);
return min;
// write code here
if (root!=null){
minDifference(root.left);
i++;
}else if(i==0) i++; //遍历第一个值 无法计算min 不操作;
}
}
int temp;
int min=0;
public int minDifference (TreeNode root) {
// write code here
minDifferenceOne(root);
return min;
}
//中序遍历是递增有序的
public void minDifferenceOne (TreeNode root) {// write code here
if (root!=null){
minDifference(root.left);
if (i>1){
//如果遍历第(大于2)个值可以减去前面的值与min比较了
if (root.val-temp<min) min = root.val-temp;
}else if (i==1){
//如果遍历到第二个值 可以得到第一min值
min = root.val-temp;i++;
}else if(i==0) i++; //遍历第一个值 无法计算min 不操作;
temp=root.val;
minDifference(root.right);}
}