Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 遍历AVL树_Java_Avl Tree - Fatal编程技术网

Java 遍历AVL树

Java 遍历AVL树,java,avl-tree,Java,Avl Tree,我已经实现了一个AVL树,我想写一个迭代器,可以按预先的顺序进行搜索。我有这种代码的和平,我总是在“stack.push(current)”中得到一个空指针,不知道为什么 @Override public Iterator<E> iterator() { return new Iterator<E>(){ Node current; int counter; Stack<Node> stack;

我已经实现了一个AVL树,我想写一个迭代器,可以按预先的顺序进行搜索。我有这种代码的和平,我总是在“stack.push(current)”中得到一个空指针,不知道为什么

@Override
public Iterator<E> iterator() {

    return new Iterator<E>(){
        Node current;
        int counter;
        Stack<Node> stack;

        public void iterator() {
            counter++;
            stack = new Stack<Node>();
            current = root;
            stack.empty();
        }
        @Override
        public boolean hasNext() {
            if(counter == count(root)) return false;
            else return true;
        }

        @Override
        public E next() {
            stack.push(current);
            counter++;
            if(current.left.value != null) return current.left.value;
            else return current.right.value;
        }

    };
}
@覆盖
公共迭代器迭代器(){
返回新的迭代器(){
节点电流;
整数计数器;
堆叠;
公共无效迭代器(){
计数器++;
堆栈=新堆栈();
电流=根;
stack.empty();
}
@凌驾
公共布尔hasNext(){
if(counter==count(root))返回false;
否则返回true;
}
@凌驾
公共教育{
堆栈推送(当前);
计数器++;
如果(current.left.value!=null)返回current.left.value;
否则返回current.right.value;
}
};
}

事先感谢:)

您的
根对象从未声明或实例化过。您正在设置
current=rootroot
什么都不是

public void iterator() {
        counter++;
        stack = new Stack<Node>();
        current = root;
        stack.empty();
    }
public void迭代器(){
计数器++;
堆栈=新堆栈();
电流=根;
stack.empty();
}

当前值=根的可能重复项?根在哪里被实例化了?这只是我整个代码的一部分。在我的代码开始时,我实例化了根即使我在迭代器中实例化根并给他根或null的值,我也会得到一个null指针。我可以在方法中写入他,但是我应该使用哪个值呢?