给你一个二叉搜索树的根节点
root
,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。
题解:使用中序遍历来实现
代码如下:
- public int getMinimumDifference(TreeNode root) {
- int pre = -1;
- int res = Integer.MAX_VALUE;
- Stack
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