Custom treeSet类,如何编写迭代器

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

我正在尝试创建自己的二进制搜索树。但是我想不出任何方式来实现具有hasNext(),next()的工作迭代器。我的想法是遍历二叉搜索树的唯一方法是通过递归。但是,如果我尝试使用next,如何保存递归调用,以便在再次调用next并返回值时恢复调用?还有其他方法

import java.util.Iterator;

public class TreeWordSet implements WordSetInterface {
    private BST root = null;

    private class BST {
        Word value;
        BST left = null;
        BST right = null;

        BST(Word word) {
            value = word;
        }

        void add(Word newWord) {
            if (newWord.compareTo(value) < 0) {
                if(left == null) {
                    left = new BST(newWord);
                } else {
                    left.add(newWord);
                }
            } else if (newWord.compareTo(value) > 0) {
                if (right == null) {
                    right = new BST(newWord);
                } else {
                    right.add(newWord);
                }
            }
        }
    }

    @Override
    public void add(Word word) {
        if (root == null) {
            root = new BST(word);
        } else {
            root.add(word);
        }
    }

    @Override
    public boolean contains(Word word) {
        return false;
    }

    @Override
    public int size() {
        return 0;
    }

    private class TreeWordSetIterator implements Iterator<Word> {

        @Override
        public boolean hasNext() {
            return false;
        }

        @Override
        public Word next() {
            return null;
        }
    }

    @Override
    public Iterator<Word> iterator() {
        return new TreeWordSetIterator();
    }

}
java iterator treeset
1个回答
0
投票

如果这是出于学习目的的练习,也许最好的方法就是去看看TreeSet是如何做到的。如果这是供生产使用的练习,请立即在此处停止,并在需要时扩展TreeSet。

© www.soinside.com 2019 - 2024. All rights reserved.