圖算法——鄰接表的深搜DFS和廣搜BFS

之前看書學的,覺得寫得挺容易懂的~~

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);
            }
        }
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章