图的表示及实现深度优先遍历和广度优先遍历
代码实现:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
public class Graph {
private int V;//顶点数
private int E;//边数
private ArrayList<Integer>[] adj;//邻接表
public Graph(int v) {
if (v < 0) throw new IllegalArgumentException("Number of vertices must be nonnegative");
V = v;
E = 0;
adj = new ArrayList[V + 1];
for (int i = 0; i <= this.V; i++) {
adj[i] = new ArrayList<Integer>();
}
}
public void addEdge(int v, int w) {
/********** Begin *********/
adj[v].add(w);
adj[w].add(v);
E++;
/********** End *********/
}
public void DFS(int v) {
/********** Begin *********/
marked[v] = true;
System.out.print(v+" ");
for (int w:adj[v]) {
if (!marked[w]) DFS(w);
}
/********** End *********/
}
public