给你一个二叉搜索树的根节点
root
,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。
题解:使用中序遍历来实现
代码如下:
public int getMinimumDifference(TreeNode root) {int pre = -1;int res = Integer.MAX_VALUE;Stack<TreeNode> s = new Stack<>();while(root != null || !s.isEmpty()){while(root != null){s.push(root);root = root.left;}TreeNode node = s.pop();if(pre == -1){pre = node.val;}else{res = Math.min(res, Math.abs(node.val - pre));pre = node.val;}root = node.right;}return res;}
注意:对于根节点,根据二叉搜索数的性质,根节点和左子树中的右子树的差值是更小的,正好中序遍历满足该条件差值=4-3,而不是4-2
4
2 7
1 3