作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个迭代器的实现,以便我可以调用它在我的 BST 类中,在 iterator() 方法下。
我的解决方案(不确定它是否能正常工作)是使用堆栈或队列来存储 BST 的节点。问题是,我的迭代器实现类无法识别我的当我将“根”节点传递给它的构造函数时,BST 节点。
为了便于您想象,这是我的 BST 实现,它适用于其他方法,包括添加、删除等。但我目前停留在 iterator()
方法上。因为我不知道如何开始和做什么。
public class DictionaryImp<E extends Comparable<E>> implements Dictionary<E> {
public class DictNode {
public DictNode left;
public DictNode right;
public String position;
public E value;
public DictNode(E value, DictNode left, DictNode right, String position) {
this.left = left;
this.right = right;
this.position = position;
this.value = value;
}
}
public DictNode root;
//... more code
public Iterator<E> iterator() {
// provides a fail fast iterator for the Dictionary
// starting at the least element greater than or equal to start
Iterable<E> itr = new DictionaryItr<E>(root);
Iterator<E> it = itr.iterator();
return it;
}
}
这是我为迭代器实现写的
public class DictionaryItr<E> implements Iterable<E> {
public DictionaryItr(DictNode root) {
first = null;
this.inOrderTraversial(root);
}
public void inOrderTraversial(DictNode node) {
if (node != null) {
inOrderTraversial(node.left);
first.push(node.value);
inOrderTraversial(node.right);
}
}
// more code: push, peek, pop
public Iterator<E> iterator() {
return new ListIterator();
}
private class ListIterator implements Iterator<E> {
private Node current = first;
public boolean hasNext() { return current != null; }
public void remove() { throw new UnsupportedOperationException(); }
public E next() {
if (!hasNext()) throw new NoSuchElementException();
E item = current.item;
current = current.next;
return item;
}
}
}
最佳答案
DictNode 类是一个内部类。当您在另一个类中使用它时,内部类名称必须被限定(使用外部类的名称)或导入。
关于Java - 二叉搜索树有一个 iterator() 方法,难以实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10739638/
我想模拟这个函数: function getMetaData(key) { var deferred = $q.defer(); var s3 = vm.ini
我是一名优秀的程序员,十分优秀!