Files
tubestation/js/js2/java/PostorderNodeIterator.java
1999-04-16 02:54:56 +00:00

57 lines
1.1 KiB
Java

import java.util.Stack;
class PostorderNodeIterator {
PostorderNodeIterator(Node n)
{
stack = new Stack();
while (n.first != null) {
stack.push(n);
n = n.first;
}
start = n;
}
Node peekParent()
{
if (stack.isEmpty())
return null;
else
return (Node)stack.peek();
}
void pop()
{
if (stack.isEmpty())
current = null;
else
current = (Node)stack.pop();
}
Node nextNode()
{
if (current == null)
return current = start;
if (stack.isEmpty())
return current = null;
else {
current = current.next;
if (current != null) {
while (current.first != null) {
stack.push(current);
current = current.first;
}
}
else
current = (Node)stack.pop();
}
return current;
}
Node start;
Node current;
Stack stack;
}