问:给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。
例:
输入:root = [4,2,6,1,3]
输出:1
原题链接:https://leetcode.cn/problems/minimum-distance-between-bst-nodes/
答:(二叉搜索树中序遍历后是升序的)
class Solution {
private int min=Integer.MAX_VALUE;//定义的时候可以定义成整数最大值
private int last=-1;
public int minDiffInBST(TreeNode root) {
inOrderTraversal(root);//因为需要考虑root==null的情况,这个函数是有返回值的,如果用递归的话就不行,所以再写个方法 调用函数
return min;
}
//中序遍历
public void inOrderTraversal(TreeNode root)
{
if(root != null)
{
//中序遍历(左中右)
inOrderTraversal(root.left);//左子树
minValue(root.val);//中间节点
inOrderTraversal(root.right);//右子树
}
}
//求最小差值
public void minValue(int val)
{
if(last == -1)
{
last = val;
}
else
{
min = Math.min(min,val - last);
last = val;
}
}
}
解析都在代码注释里了,大家有什么不懂的可以评论一起学习交流~