BinarySearchTree 迭代器

问题描述 投票:0回答:0

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 对象时出现错误,该对象声明无法推断类型参数。

java for-loop iterator binary-search-tree tree-traversal
© www.soinside.com 2019 - 2024. All rights reserved.