530_二叉搜索树的最小绝对差

530_二叉搜索树的最小绝对差

 

package 二叉树.二叉搜索树;

import java.util.ArrayList;
import java.util.List;

/**
 * https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/
 * 
 * @author Huangyujun
 *树中至少有 2 个节点
 */
public class _530_二叉搜索树的最小绝对差 {

//中序遍历    (二叉搜索树的中序遍历是递增的,最小绝对值,只需要用前一个值-后二个值得出)
//从第二个结点开始,每次进入一个新的结点,都要不断的更新最小距离
    int prev;
    int ans;
    public int getMinimumDifference(TreeNode root) {
        prev = -1;
        ans = Integer.MAX_VALUE;
        inorder(root);
        return ans;
    }
    //通过拿到前一个的val ,第二个val 减掉即可得知最小的
    public void inorder(TreeNode node) {
        if(node == null)    return;
        inorder(node.left);
        //拿到当前结点,需要判断一下是否遍历到第二个结点了
        if(prev == - 1) {    //才遍历到当前第一个结点
            prev = node.val;
        }else {
            ans = Math.min(ans, node.val - prev);
            prev = node.val;
        }
        inorder(node.right);
        
    }

    
}

 

posted @ 2021-12-20 00:30  一乐乐  阅读(30)  评论(0编辑  收藏  举报