Loading

【力扣】530. 二叉搜索树的最小绝对差

给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。

 

示例:

输入:

1
\
3
/
2

输出:
1

解释:
最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst

 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    int minVal = Integer.MAX_VALUE;
    int preVal = -1;

    //中序遍历:左子节点、根节点、右子节点
    //根据二叉搜索树的特性为:左子节点小于根节点、根节点小于右子节点

    public int getMinimumDifference(TreeNode root) {
        dfs(root);
        return minVal;
    }

    public void dfs(TreeNode root){
        if(root == null){
            return ;
        }
        if(minVal == 0){
            return;
        }
        
        dfs(root.left);

        if(preVal == -1){
            preVal = root.val;
        } else {
            minVal = Math.min(minVal, Math.abs(root.val - preVal));
            preVal = root.val;
        }
        dfs(root.right);
    }
}

 

posted @ 2020-10-12 11:02  冯廷鑫  阅读(118)  评论(0编辑  收藏  举报