ade*_*sin 5 java algorithm graph jgrapht depth-first-search
我正在试验JGraphT并试图使用JGraphT API实现深度优先搜索.我创建了一个包含节点和顶点的简单图形,如下所示:
DirectedGraph <Integer, DefaultEdge> graph = new
DefaultDirectedGraph <Integer, DefaultEdge>(DefaultEdge.class);
graph.addVertex(7);
graph.addVertex(4);
graph.addVertex(9);
graph.addVertex(3);
graph.addVertex(2);
graph.addVertex(5);
graph.addEdge(7, 4);
graph.addEdge(7, 9);
graph.addEdge(9, 3);
graph.addEdge(3, 2);
graph.addEdge(3, 5);
Run Code Online (Sandbox Code Playgroud)
我如何使用DepthFirstSearchIterator在此图表上运行DFS?亲切的问候
ten*_*ica 10
只需使用遍历图表即可DepthFirstSearchIterator.这是一个例子:
import org.jgrapht.DirectedGraph;
import org.jgrapht.graph.DefaultDirectedGraph;
import org.jgrapht.graph.DefaultEdge;
import org.jgrapht.traverse.DepthFirstIterator;
import org.jgrapht.traverse.GraphIterator;
public class GraphDemo {
public static void main(String[] args) {
DirectedGraph<Integer, DefaultEdge> graph =
new DefaultDirectedGraph <Integer, DefaultEdge>(DefaultEdge.class);
graph.addVertex(7);
graph.addVertex(4);
graph.addVertex(9);
graph.addVertex(3);
graph.addVertex(2);
graph.addVertex(5);
graph.addEdge(7, 4);
graph.addEdge(7, 9);
graph.addEdge(9, 3);
graph.addEdge(3, 2);
graph.addEdge(3, 5);
GraphIterator<Integer, DefaultEdge> iterator =
new DepthFirstIterator<Integer, DefaultEdge>(graph);
while (iterator.hasNext()) {
System.out.println( iterator.next() );
}
}
}
Run Code Online (Sandbox Code Playgroud)
要获得更多控制,可以TraversalListener使用addTraversalListener()附加到迭代器.这是一个基本监听器的示例.