270. Closest Binary Search Tree Value

https://leetcode.com/problems/closest-binary-search-tree-value/

跟98一样都是利用了inorder traverse BST的有序性

/**
 * 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 {
    double curDiff = Double.MAX_VALUE;
    int curVal = 0;
    public int closestValue(TreeNode root, double target) {
        inorder(root, target);
        return curVal;
    }
    private void inorder(TreeNode node, double target) {
        if (node == null) {
            return;
        }
        inorder(node.left, target);
        double diff = Math.abs(node.val - target);
        if (diff < curDiff) {
            curDiff = diff;
            curVal = node.val;
            inorder(node.right, target);
        } 
        //因为是找最接近的最小值,所以一旦diff变大或者不变就可以退出了
        //else {
        //    return;
        //}
    }
}

Last updated