Java中未定向和未加权的图形上的BFS和DFS

时间:2014-04-24 14:29:12

标签: java graph depth-first-search breadth-first-search

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图。任何建议/指导。

2 个答案:

答案 0 :(得分:0)

以OOP-with-GC方式重新实现它 - 每个节点应该有一组边缘到的节点。那么这个问题变得非常容易。您迭代起始节点的相邻节点。对于DFS,您可以在每个节点上进行递归。对于BFS,您将节点放在Deque中,并始终获得Deque的尾部。

答案 1 :(得分:0)

只需使用红黑树来获取图形的有序遍历,一旦遍历使用Math.random()将所有现有值替换为新值。确保使用SEED = Integer.max_value;