java二叉搜索树的前序迭代器next方法

r1zhe5dt  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(167)

我正在构建一个二叉搜索树类,它有一个预序迭代器和一个有序迭代器。我已经为前序迭代器编写了一个尝试,但是我认为我没有正确的代码。我阅读了一些关于迭代器编码的指南,我接受了我解释的内容,并尝试在我的设计中实现它。
根据我对预顺序遍历的理解,先访问根,然后访问左,然后访问右。我对如何用我的代码实现这一点感到困惑。在下一个方法中,假设根不为null,然后访问左侧并检查右侧,然后移动到右侧节点。
代码澄清的一些注解e=节点的元素/数据k=键

public class BSTPreOrderIterator<E, K> implements StructureIterator<E> {

    private final BST<E, K> tree;
    BSTNode<E> root =null;

    public BSTPreOrderIterator(BSTNode<E> root, Comparator<E> sortFct,
                               BiFunction<K, E, Integer> searchFct) {
        this.tree = new BST<E, K>(sortFct, searchFct);
        this.root = root;
    }

    @Override
    public E next() {
        BSTNode<E> current = root;
        if(!(root == null)){

            current = root.getLeft();

            if(current.getRight() != null){
                current = current.getRight();
            }

            if(current.left != null){
                current = current.getLeft();
            }

        }
        return current.getData();

    }

    @Override
    public boolean hasNext() {
        return !tree.isEmpty();
    }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题