之前看書學的,覺得寫得挺容易懂的~~
package com.zhang.pro2; import java.util.Vector; public class NetWork { Vertex start; private class Vertex{ Object object; Edge edges; Vertex nextVertext; boolean visited; } private class Edge{ Vertex to; int weight; Edge nextEdge; } public void visit(Vertex v){ System.out.println(v.object); } //廣度優先 public void BFS(){ if(start ==null) return; Vector queue = new Vector(); visit(start); queue.addElement(start); while(!queue.isEmpty()){ Vertex v = (Vertex) queue.firstElement(); queue.removeElementAt(0); for(Edge e=v.edges ;e!=null ;e=e.nextEdge){ Vertex w = e.to; if(!w.visited){ visit(w); w.visited = true; queue.addElement(w); } } } } public void DFS(){ if(start!=null){ DFS(start); } } public void DFS(Vertex v){ visit(v); v.visited = true; for(Edge e = v.edges; e!=null ;e=e.nextEdge){ Vertex w = e.to; if(!w.visited){ DFS(w); } } } }