Skip to content

Commit 1812e49

Browse files
authored
Create Closest Nodes Queries in a Binary Search Tree.java
1 parent 637c0ec commit 1812e49

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode() {}
8+
* TreeNode(int val) { this.val = val; }
9+
* TreeNode(int val, TreeNode left, TreeNode right) {
10+
* this.val = val;
11+
* this.left = left;
12+
* this.right = right;
13+
* }
14+
* }
15+
*/
16+
class Solution {
17+
public List<List<Integer>> closestNodes(TreeNode root, List<Integer> queries) {
18+
TreeSet<Integer> set = new TreeSet<>();
19+
traverse(root, set);
20+
List<List<Integer>> result = new ArrayList<>();
21+
for (Integer query : queries) {
22+
Integer lower = set.floor(query);
23+
Integer upper = set.ceiling(query);
24+
result.add(Arrays.asList((lower == null ? -1 : lower), (upper == null ? -1 : upper)));
25+
}
26+
return result;
27+
}
28+
29+
private void traverse(TreeNode root, TreeSet<Integer> set) {
30+
if (root == null) {
31+
return;
32+
}
33+
set.add(root.val);
34+
traverse(root.left, set);
35+
traverse(root.right, set);
36+
}
37+
}

0 commit comments

Comments
 (0)