資料結構(十三)圖的遍歷
阿新 • • 發佈:2018-11-25
圖的遍歷
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. 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 )