鄰接矩陣完全可以直接進行深度優先搜索(DFS),無需轉換為鄰接表。兩種存儲結構均可實現圖遍歷,只是時空複雜度不同。
void dfs_matrix(int u, vector>& adj, vector& vis) {
vis[u] = true;
// 處理節點 u
for (int v = 0; v < adj.size(); ++v) {
if (adj[u][v] && !vis[v]) { // 邊存在且未訪問
dfs_matrix(v, adj, vis);
}
}
}
| 操作 | 鄰接矩陣 | 鄰接表 |
|---|---|---|
| 空間 | O(V²) | O(V+E) |
| 遍歷所有鄰接點 | O(V) | O(deg(u)) |
| 判斷邊是否存在 | O(1) | O(deg(u)) |
鄰接矩陣實現 Prim 算法常作為模板,代碼見原答案。