File tree Expand file tree Collapse file tree 2 files changed +19
-4
lines changed Expand file tree Collapse file tree 2 files changed +19
-4
lines changed Original file line number Diff line number Diff line change 4
4
public class BTreeIterator {
5
5
private Node root ;
6
6
private Stack <Node > stack ;
7
+ private Stack <Node > preOrderStack ;
7
8
private Stack <Node > leftVisitedStack ;
8
9
9
10
public BTreeIterator (Node n ) {
10
11
root = n ;
11
12
stack = new Stack <Node >();
12
13
leftVisitedStack = new Stack <Node >();
14
+ preOrderStack = new Stack <Node >();
15
+ preOrderStack .push (root );
13
16
pushLeft (root );
14
17
}
15
18
@@ -49,14 +52,19 @@ private void pushLeft(Node node) {
49
52
}
50
53
}
51
54
55
+
56
+ public boolean hasNextPreOrder (){
57
+ return !preOrderStack .isEmpty ();
58
+ }
59
+
52
60
public Node preOrderNext () {
53
- if (hasNext ()) {
54
- Node node = stack .pop ();
61
+ if (! preOrderStack . isEmpty ()) {
62
+ Node node = preOrderStack .pop ();
55
63
56
64
if (node .right != null )
57
- stack .push (node .right );
65
+ preOrderStack .push (node .right );
58
66
if (node .left != null )
59
- stack .push (node .left );
67
+ preOrderStack .push (node .left );
60
68
61
69
return node ;
62
70
} else {
Original file line number Diff line number Diff line change @@ -35,6 +35,13 @@ public static void main(String[] args) {
35
35
}
36
36
System .out .println ();
37
37
38
+ treeIterator .reset ();
39
+ while (treeIterator .hasNextPreOrder ()){
40
+ Node next = treeIterator .preOrderNext ();
41
+ System .out .print (next .value + " " );
42
+ }
43
+ System .out .println ();
44
+
38
45
39
46
}
40
47
You can’t perform that action at this time.
0 commit comments