Java.邻接表法深度遍历图
·
package 算法;
import java.util.ArrayList;
import java.util.List;
public class GraphBiao {
//
private List<List<Integer>> adjList;
//列表套列表
private int vertices;
public GraphBiao(int vertices){
this.vertices=vertices;
this.adjList=new ArrayList<>();
for(int i=0;i<=vertices;i++){
adjList.add(new ArrayList<>());
}//为每个点设一个邻接表
}
public void addEdge(int v1,int v2){
adjList.get(v1).add(v2);
adjList.get(v2).add(v1);
//因为adj每个元素是一个列表,所有后面还有一个点
}//拆解每个点的意思?
public void dfs(int starVertex){
boolean[] visited=new boolean[vertices+1];
System.out.println("遍历结果是:");
dfsUtil(starVertex,visited);
System.out.println();
}
public void dfsUtil(int vertex,boolean[] visited){
visited[vertex]=true;
//遍历当前顶点的所有邻居
for(int neighbor:adjList.get(vertex)){
if(!visited[neighbor]){
dfsUtil(neighbor,visited);
}
}
}
public void printAdjlist(){
System.out.println("邻接表");
for(int i=1;i<=vertices;i++){
System.out.println("顶点"+i+"的邻居"+adjList.get(i));
}
}
public static void main(String[] args) {
GraphBiao g=new GraphBiao(6);
g.addEdge(1,2);
g.addEdge(1,5);
g.addEdge(2,3);
g.addEdge(2,4);
g.addEdge(3,6);
g.addEdge(4,5);
g.addEdge(4,6);
g.printAdjlist();
g.dfs(1);
List<String> names=new ArrayList<>();
names.add("Alice");
names.add("ton");
System.out.println(names.get(1));
}
}
更多推荐


所有评论(0)