0
我目前在AVL-tree
上編寫並編寫迭代器方法,以預先遍歷整個樹。如果我處理'stack.empty()'這一行並且不知道爲什麼,我會得到一個NullPointer
。 4隻眼睛看起來比2只好;)。預先感謝您事先的幫助。通過avl樹遍歷
代碼:
@Override
public Iterator<E> iterator() {
return new Iterator<E>(){
Node start;
Node current;
// int counter;
Stack<Node> stack;
// int border = count(root);
public void iterator() {
stack = new Stack<Node>();
current = start;
stack.add(root);
}
@Override
public boolean hasNext() {
if(stack.empty()) return false;
else return true;
}
@Override
public E next() {
if(!hasNext()){
throw new NoSuchElementException();
}
Node n = stack.pop();
if(n.left.value != null) stack.push(n.left);
if(n.right.value != null) stack.push(n.right);
return n.value;
}
};
}
'''節點start'''未初始化。方法'''iterator()'''不被調用。它不是一個構造函數。你應該使用實例初始化''''''''。 – saka1029
我不需要'節點開始',如果我初始化它,沒有任何變化。你可以給我一個如何調用'iterator()'的示例代碼。預先感謝:) – Maxim
只需用'''{}''''把初始化代碼括起來。換句話說,刪除'''public void iterator()''' – saka1029