Java中无向未迁移图上的BFS和DFS 公共类图{ 私有int V;//顶点数 private int E;//边数 私有数组列表[]形容词; 公共无效补遗(整数v,整数w){ 如果(!this.adj[v].包含(w)){ this.adj[v].add(w); } 如果(!this.adj[w].包含(v)){ this.adj[w].add(v); } } 公共图bfs(int s){ } 公共图dfs(int-s){ }

Java中无向未迁移图上的BFS和DFS 公共类图{ 私有int V;//顶点数 private int E;//边数 私有数组列表[]形容词; 公共无效补遗(整数v,整数w){ 如果(!this.adj[v].包含(w)){ this.adj[v].add(w); } 如果(!this.adj[w].包含(v)){ this.adj[w].add(v); } } 公共图bfs(int s){ } 公共图dfs(int-s){ },java,graph,depth-first-search,breadth-first-search,Java,Graph,Depth First Search,Breadth First Search,我已经用java创建了一个Graph,这样ArrayList数组就可以保存附加到另一个顶点的顶点。我想在这个Graph结构上实现BFS和DFS,这样我就可以从单个源中获得一个DFS/BFS图。有什么建议/指南吗。用GC的OOP方式重新实现它-每个节点都应该有一组节点然后这个问题变得非常简单。你迭代开始节点的相邻节点。对于DFS,你在每个节点上递归。对于BFS,你把节点放在一个三角形中,并且总是得到三角形的尾部。只要使用红黑树来获得图的有序遍历,一旦获得遍历,就使用Math.random()用新值

我已经用java创建了一个Graph,这样ArrayList数组就可以保存附加到另一个顶点的顶点。我想在这个Graph结构上实现BFS和DFS,这样我就可以从单个源中获得一个DFS/BFS图。有什么建议/指南吗。

用GC的OOP方式重新实现它-每个节点都应该有一组节点然后这个问题变得非常简单。你迭代开始节点的相邻节点。对于DFS,你在每个节点上递归。对于BFS,你把节点放在一个三角形中,并且总是得到三角形的尾部。

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

您可以自定义以满足您的要求。“这样我就可以重新获取同一类的对象”?此外,您是否查看了wikipedia?他们已经提供了您所需的所有内容@ᴋᴇʏsᴇʀ我过去是在树上做的,但一直停留在图形上,编辑了OP.@wali中的错误。区别在于你去邻居而不是孩子,也就是说,没有太大区别。使用这种结构的流如何?写一个方法:设置GetNextant(图g,int vertexId)并从那里开始。对于DFS你递归,对于BFS你排队。
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) {

    }