我正在为自己的Graph Iterator实现hasNext()
函数。我的遍历必须是广度优先的。
班级GIterator
的变量:
Graph g
,Vertex beginV
,Set<Vertex> discovered
(已经使用我们的迭代器迭代的顶点被添加到已发现的内容中。)
如何测试hasNext()
函数的简单示例:
ImplGraph graph = new ImplGraph();
Vertex vertex = new ImplVertex(0);
graph.addVertex(vertex);
Iterator<Vertex> it = new GIterator(graph, vertex);
assertTrue(it.hasNext());
assertSame(vertex, it.next());
assertFalse(it.hasNext());
我试过了:
@Override
public boolean hasNext() {
return !(graph.getNeighbours(beginV).isEmpty());
}
如果开始顶点有任何邻居,则返回true,即graph具有下一个顶点。但显然这只适用于开始顶点,如果我的懒惰迭代器移动到另一个顶点,我将需要检查是否有任何邻居。
我的案例中的Graph
类包含函数getNeighbours
和getAllVertices
。
我已经被困了一段时间了,有什么想法吗?