图
1.图的表示方式
邻接矩阵:

邻接链表

2.图的遍历
2.1 广度优先
public void bfs(boolean[] isVisted,int target){ int u;//存储队列头元素 int w; System.out.println(target+"------->"); isVisted[target]=true; LinkedList queue=new LinkedList(); queue.addLast(target); while(!queue.isEmpty()){ u=(Integer)queue.removeFirst(); w=getFirstNeighbor(u); while(w!=-1){ if(!isVisted[w]){ System.out.print(w+"------->"); isVisted[w]=true; queue.addLast(w); }else{ w=getNextNeighbor(u,w); } } } } //遍历所有结点,都进行BFS public void bfs(){ for(int i=0;i<numOfVertex;i++){ if(!isVisted[i]) { bfs(isVisted, i); } } }
2.2 深度优先
public void dfs(boolean[] isVisted,int target){ System.out.print(getVertexByIndex(target)+"------->"); isVisted[target]=true; int w=getFirstNeighbor(target); //如果有 while(w!=-1){ if(!isVisted[w]){ dfs(isVisted,w); }else{ w=getNextNeighbor(target,w); } } } //对dfs进行重载 public void dfs(){ //遍历所有的结点,进行dfs(回溯) for(int i=0;i<numOfVertex;i++){ if(!isVisted[i]){ dfs(isVisted,i); } } }

浙公网安备 33010602011771号