public class Graph {
private int V; //Number of vertices
private int E; // Number of edges
private ArrayList<Integer>[] adj;
public void addEdge(int v, int w) {
if (!this.adj[v].contains(w)) {
this.adj[v].add(w);
}
if (!this.adj[w].contains(v)) {
this.adj[w].add(v);
}
}
public Graph bfs(int s) {
}
public Graph dfs(int s) {
}
我在java中创建了Graph,使得ArrayList数组保存附加到另一个顶点的顶点。我想在这个Graph结构上实现BFS和DFS,以便从单一来源获得DFS / BFS图。任何建议/指导。
答案 0 :(得分:0)
以OOP-with-GC方式重新实现它 - 每个节点应该有一组边缘到的节点。那么这个问题变得非常容易。您迭代起始节点的相邻节点。对于DFS,您可以在每个节点上进行递归。对于BFS,您将节点放在Deque中,并始终获得Deque的尾部。
答案 1 :(得分:0)
只需使用红黑树来获取图形的有序遍历,一旦遍历使用Math.random()将所有现有值替换为新值。确保使用SEED = Integer.max_value;