272-Closest-Binary-Search-Tree-Value-II
Last updated
Last updated
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
LinkedList<Integer> result;
// int diff=Integer,MAX_VALUE;
public List<Integer> closestKValues(TreeNode root, double target, int k) {
result=new LinkedList<>();
if(root==null){
return result;
}
recur(root,target,k);
return result;
}
private void recur(TreeNode root,double target,int k){
if(root==null){
return;
}
recur(root.left,target,k);
if(result.isEmpty()){
result.add(root.val);
}else if(result.size()==k){
//提前终止递归,进行剪枝操作
if(Math.abs(result.peekFirst()-target)<=Math.abs(root.val-target)){
return;
}else{
result.offerLast(root.val);
result.pollFirst();
}
}else{
result.offerLast(root.val);
}
recur(root.right,target,k);
}
}