數據結構(十三)圖的遍歷

圖的遍歷

1. DFS

深度優先搜索(Depth First Search),類似於樹的先序遍歷

void DFS ( Vertex V ){
    visited[ V ] = true;
    for ( V 的每個鄰接點 W )
        if( !visited[ W ])
            DFS( W );
}

若有 N 個頂點、E 條邊,時間複雜度是

  • 用鄰接表存儲,O(N + E)
  • 用鄰接矩陣存儲,O(N2^2​)

2. BFS

廣度優先搜索(Breadth First Search),相當於樹的層序遍歷

void BFS( Vertex V ){
    queue<Vertex> q;
    visited[V] = true;
    q.push(V);
    while(!q.empty()){
        V = q.front(); q.pop();
        for( V 的每個鄰接點 W ){
            visited[W] = true;
            q.push(W);
        }
    }
}

若有 N 個頂點、E 條邊,時間複雜度是

  • 用鄰接表存儲,O(N + E)
  • 用鄰接矩陣存儲,O(N2^2)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章