272. Closest Binary Search Tree Value II

Posted 鱼与海洋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了272. Closest Binary Search Tree Value II相关的知识,希望对你有一定的参考价值。

Given a non-empty binary search tree and a target value, find k values in the BST that are closest to the target.

Note:

  • Given target value is a floating point.
  • You may assume k is always valid, that is: k ≤ total nodes.
  • You are guaranteed to have only one unique set of k values in the BST that are closest to the target.

 

Follow up:
Assume that the BST is balanced, could you solve it in less than O(n) runtime (where n = total nodes)?

Hint:

  1. Consider implement these two helper functions:
    1. getPredecessor(N), which returns the next smaller node to N.
    2. getSuccessor(N), which returns the next larger node to N.
    Show More Hint 

 

Hide Company Tags
 Google
Hide Tags
 Tree Stack
Show Similar Problems
 用inorder来做 , bst inorder是有序的。
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
 //use inorder it will be a increase array
public class Solution {
    public List<Integer> closestKValues(TreeNode root, double target, int k) {
        List<Integer> res = new LinkedList<Integer>();
        getClosestKValues(res, root, target, k);
        return res;
    }
    public void getClosestKValues(List<Integer> res, TreeNode root, double target, int k){
        if(root == null) return;
        getClosestKValues(res, root.left, target, k);
        if(res.size() == k){
            if(Math.abs(res.get(0) - target) > Math.abs(root.val - target)){
                res.remove(0);
                res.add(root.val);
            }
            else
                return;
        }
        else
            res.add(root.val);
        getClosestKValues(res, root.right, target, k);
    }
}

 

以上是关于272. Closest Binary Search Tree Value II的主要内容,如果未能解决你的问题,请参考以下文章

LC 272. Closest Binary Search Tree Value II

LeetCode 236. Lowest Common Ancestor of a Binary Tree; 235. Lowest Common Ancestor of a Binary Searc

LeetCode Closest Binary Search Tree Value

Closest Binary Search

270. Closest Binary Search Tree Value

Leetcode 270. Closest Binary Search Tree Value