gpt4 book ai didi

java - 使用 jung 的连通图的深度优先遍历不显示右遍历

转载 作者:行者123 更新时间:2023-12-01 04:45:04 25 4
gpt4 key购买 nike

我正在使用 jung 实现用户绘制的图的深度优先遍历。

我现在有以下代码:

 public <V,E> void dftdraw(Graph<V,E> g) {
V start = null;
for (V v:g.getVertices()){
if(v.toString().equals("0"))
start = v;
}

Set visited = new HashSet();
LinkedList stack = new LinkedList();
stack.add(start);
System.out.println(start.toString());
// traverse through graph in depth-first order
while (!stack.isEmpty())
{
V v = (V)stack.removeFirst();
visited.add(v);
Set neighbors = (Set) g.getNeighbors(v);

for (Iterator n_it = neighbors.iterator(); n_it.hasNext(); )
{
V w = (V)n_it.next();

if (!visited.contains(w)){
System.out.println(w.toString());
stack.addFirst(w);
}
}
}
}

但这并不是深度优先,它首先打印出连接到起始顶点的顶点,而不是像遍历第一个连接的顶点,然后遍历它的连接的顶点。

最佳答案

那是因为您打印顶点的速度太快了。如果您希望按访问顺序打印它们,则需要在访问时打印(在从堆栈中删除顶点之后)。否则该算法看起来没问题。

关于java - 使用 jung 的连通图的深度优先遍历不显示右遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15995962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com