LeetCode 272. Closest Binary Search Tree Value II
2020-05-18 19:19:51
# leetcode
Problem
LeetCode 272. Closest Binary Search Tree Value II
1. 题目简述
给出一颗二叉树,给出一个目标double类型的target,找出k个与其最近的节点值。例如:
Input: root = [4,2,5,1,3], target = 3.714286, and k = 2
4
/ \
2 5
/ \
1 3
Output: [4,3]
2. 算法思路
中序遍历 + Stack + Queue
这道题和LeetCode 270看起来很像,只不过270是只要求一个最接近的数。
其实算法就是在一个有序数组里找出最接近target的k个数。在这个数组中和target的关系有两种,一种是大于,一种是小于等于。对于小于等于target的数,我们将其按顺序压入stack中;对于大于target的数,我们将其按顺序放入queue中。然后我们比较栈顶和队首的值,哪个更接近target,就取出哪个,直至k个。
Corner Cases:
注意栈和队列为空的情况!
3. 解法
- LeetCode 105 preorder + inorder
使用Arrays.copyOfRange(int[] data, int start, int end)函数,写起来简洁,但是有点慢,而且耗空间大,因为要截取数组。
1 |
|