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

标签 java graph jung

我正在使用 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/

相关文章:

java - Gradle任务间歇性失败

python - 使用python逼近导数

Boost 图形库 : Potential Bug

java - 荣格用值给顶点着色

带拓扑布局的java图形可视化

java - 使用 Spring-Integration(仅限注释)获取具有某些字段(投影)的 mongodb 文档

java - 为什么字符串等于在我的代码中不起作用?

java - Android 可滚动布局 - 方向更改时 View 不可见

graph - Titan 需要多大的 Faunus 图形分析框架?

python - 交互式 Python 网络/图形建模