-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathBSTIterator.java
More file actions
41 lines (33 loc) · 950 Bytes
/
Copy pathBSTIterator.java
File metadata and controls
41 lines (33 loc) · 950 Bytes
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
package utils;
import java.util.ArrayDeque;
import java.util.Deque;
import utils.DataStructures.TreeNode;
public class BSTIterator {
private final Deque<TreeNode> stack;
private final boolean isForward;
public BSTIterator(TreeNode root, boolean flag) {
isForward = flag;
stack = new ArrayDeque<>();
TreeNode node = root;
while (node != null) {
stack.addFirst(node);
node = isForward ? node.left : node.right;
}
}
public boolean hasNext() {
return !stack.isEmpty();
}
public int peek() {
return stack.getFirst().val;
}
public int next() {
TreeNode node = stack.removeFirst();
final int val = node.val;
node = isForward ? node.right : node.left;
while (node != null) {
stack.addFirst(node);
node = isForward ? node.left : node.right;
}
return val;
}
}