有人能告诉我我对 Stack 的实现是否正确吗?
class LevelIter<Node> implements Iterable<Node> {
Stack<Node> s = null;
public LevelIter(Stack<Node> s) {
this.s = s;
}
public Iterator<Node> iterator(){
Iterator<Node> it = new Iterator<Node>() {
private int index = 0;
@Override
public boolean hasNext(){
return (index < s.size() && !s.isEmpty());
}
@Override
public Integer next(){
return (Integer) (s.pop()).data;
}
@Override
public void remove(){
s.remove();
}
};
return it;
}
}
其中 Node 是二叉树中的一个节点 -
class Node{
int data;
Node left;
Node right;
public Node(int data){
this.data = data;
this.left = null;
this.right = null;
}
}
我主要打电话给——
LevelIter<Node> l = new LevelIter<Node>(s);
for(int n:l){
System.out.println(n);
}