给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。
注意:本题与 530:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 相同
示例 1:
输入:root = [4,2,6,1,3]
输出: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 {int diff=Integer.MAX_VALUE,pre=-1;public int minDiffInBST(TreeNode root) {findMinDiffInBST(root);return diff;}public void findMinDiffInBST(TreeNode root) {if(root.left!=null) findMinDiffInBST(root.left);if(pre!=-1)diff=Math.min(diff,Math.abs(root.val-pre));pre=root.val;if(root.right!=null) findMinDiffInBST(root.right);}
}