-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathSearchTree.java
More file actions
63 lines (45 loc) · 1.17 KB
/
SearchTree.java
File metadata and controls
63 lines (45 loc) · 1.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package ssj.algorithm;
import com.google.common.base.Preconditions;
import java.util.Iterator;
/**
* Created by shenshijun on 15/2/5.
*/
public interface SearchTree<T extends Comparable<? super T>> extends Iterable<T> {
void add(T ele);
default void addAll(Iterable<? extends T> iter) {
Preconditions.checkNotNull(iter);
for (T ele : iter) {
add(ele);
}
}
default void deleteAll(Iterable<? extends T> iter) {
Preconditions.checkNotNull(iter);
for (T ele : iter) {
delete(ele);
}
}
int size();
Iterator<T> preIterator();
Iterator<T> postIterator();
void delete(T ele);
public T successor(T value);
public T predecessor(T value);
T max();
T min();
default T kthElement(int k) {
Preconditions.checkPositionIndex(k, size());
int cur_pos = 0;
for (T ele : this) {
if (cur_pos == k) {
return ele;
}
cur_pos++;
}
return null;
}
boolean contains(T ele);
public default boolean isEmpty() {
return size() <= 0;
}
public boolean isBalance();
}