文章目录
- 题目描述
- 解题思路
- 代码
题目描述
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数,其数值等于两值之差的绝对值。
示例 1:
输入:root = [4,2,6,1,3]
输出:1
示例 2:
输入:root = [1,0,48,null,null,12,49]
输出:1
提示:
树中节点的数目范围是 [2, 104]
0 <= Node.val <= 105
注意:本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同
解题思路
对于搜索二叉树来讲,中序遍历的结果就是从小到大排列
代码
class Solution {
int minimumDifference=Integer.MAX_VALUE;//先找一个值作为最小差值
TreeNode pre = null;//记录前一个节点
public int getMinimumDifference(TreeNode root) {
//使用中序遍历
if (root==null){
return minimumDifference;
}
//递归左子树得到最小差值
minimumDifference = getMinimumDifference(root.left);
if (pre!=null&&(root.val- pre.val)<minimumDifference){
//更新最小差值
minimumDifference = root.val- pre.val;
}
pre =root;
//递归右子树
return getMinimumDifference(root.right);
}
}