前文 DFS/BFS 僅適用連通圖。非連通圖需從每個連通分量選擇起始點分別遍歷,才能訪問所有頂點。

public void DFSTraverse()
{
InitVisited();
foreach (Vertex<T> v in items)
if (!v.visited) DFS(v);
}
public void BFSTraverse()
{
InitVisited();
foreach (Vertex<T> v in items)
if (!v.visited) BFS(v);
}
外層迴圈遍歷所有頂點,若未訪問則啟動對應遍歷,確保覆蓋所有連通分量。