Skip to content

Commit 6c208c0

Browse files
committed
binary tree preorder iterator
1 parent 37cdd7a commit 6c208c0

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

PuzzleCoding/src/BTreeIterator.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
public class BTreeIterator {
55
private Node root;
66
private Stack<Node> stack;
7+
private Stack<Node> preOrderStack;
78
private Stack<Node> leftVisitedStack;
89

910
public BTreeIterator(Node n) {
1011
root = n;
1112
stack = new Stack<Node>();
1213
leftVisitedStack = new Stack<Node>();
14+
preOrderStack = new Stack<Node>();
15+
preOrderStack.push(root);
1316
pushLeft(root);
1417
}
1518

@@ -49,14 +52,19 @@ private void pushLeft(Node node) {
4952
}
5053
}
5154

55+
56+
public boolean hasNextPreOrder(){
57+
return !preOrderStack.isEmpty();
58+
}
59+
5260
public Node preOrderNext() {
53-
if (hasNext()) {
54-
Node node = stack.pop();
61+
if (!preOrderStack.isEmpty()) {
62+
Node node = preOrderStack.pop();
5563

5664
if (node.right != null)
57-
stack.push(node.right);
65+
preOrderStack.push(node.right);
5866
if (node.left != null)
59-
stack.push(node.left);
67+
preOrderStack.push(node.left);
6068

6169
return node;
6270
} else {

PuzzleCoding/src/IsBST.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@ public static void main(String[] args) {
3535
}
3636
System.out.println();
3737

38+
treeIterator.reset();
39+
while (treeIterator.hasNextPreOrder()){
40+
Node next = treeIterator.preOrderNext();
41+
System.out.print(next.value + " ");
42+
}
43+
System.out.println();
44+
3845

3946
}
4047

0 commit comments

Comments
 (0)