1. 程式人生 > >資料結構(十三)圖的遍歷

資料結構(十三)圖的遍歷

圖的遍歷

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(N 2
    ^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(N 2 ^2 )