BSTIterator类:
public class BSTIterator<E> implements Iterator<E>, Iterable<E> {
protected E rootData;
protected int size;
protected int counter;
protected TraversalType traversalType;
protected LLQ<E> traversalQueue;
public BSTIterator(E rootData, int size) {
this.rootData = rootData;
this.size = size;
this.counter = 0;
}
@Override
public boolean hasNext() {
return counter < size;
}
@Override
public E next() {
counter++;
return traversalQueue.dequeue();
}
@Override
public Iterator<E> iterator() {
return this;
}
public void setTraversalType(TraversalType traversalType, LLQ<E> traversalQueue) {
this.traversalType = traversalType;
this.traversalQueue = traversalQueue;
}
}
BinarySearchTree 类中的方法:
public Iterator<T> iterator() {
if (root == null) {
return new BSTIterator<>(null, 0);
} else {
switch (traversalType) {
case INORDER:
return new BSTIterator<>(root.getData(), size, inOrderQ);
case PREORDER:
return new BSTIterator<>(root.getData(), size, preOrderQ);
case POSTORDER:
return new BSTIterator<>(root.getData(), size, postOrderQ);
default:
return new BSTIterator<>(null, 0);
}
}
}
我正在尝试制作一种支持增强的二叉搜索树循环遍历的方法。实例化一个新的 BSTIterator 对象时出现错误,该对象声明无法推断类型参数。