530. 二叉搜索树的最小绝对差
简单
给你一个二叉搜索树的根节点 root
,返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数,其数值等于两值之差的绝对值。
示例 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 {
TreeNode pre= null;
int miniDifference =Integer.MAX_VALUE;
public int getMinimumDifference(TreeNode root) {
if(root==null){
return 0;
}
traversal(root);
return miniDifference;
}
public void traversal(TreeNode root){
if(root ==null)return; //排除空指针
traversal(root.left); //中序历遍 左
if(pre!=null){ //中
miniDifference=Math.min(miniDifference,Math.abs(root.val-pre.val));
}
pre=root; //双指针
traversal(root.right);//右
}
}
1.迭代 再理解,写的实际是方法函数,函数的自身引用
2.这里双指针的关键是,pre = root (pre = current);用的中序遍历,需要pre 跟着cur 走,
就需要在历遍”中“值的时候,加上pre=root;
3.Math方法,需要用root.value 用值计算