程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#與數據結構--圖的遍歷(6)

C#與數據結構--圖的遍歷(6)

編輯:關於C語言

8.3.3 非連通圖的遍歷

以上討論的圖的兩種遍歷方法都是相對於無向連通圖的,它們都是從一個頂點出發就能訪問到圖中的所有頂點。若無向圖是非連通圖,則只能訪問到初始點所在連通分量中的所有頂點,其他連通分量中的頂點是不可能訪問到的(如圖8.17所示)。為此需要從其他每個連通分量中選擇初始點,分別進行遍歷,才能夠訪問到圖中的所有頂點,否則不能訪問到所有頂點。為此同樣需要再選初始點,繼續進行遍歷,直到圖中的所有頂點都被訪問過為止。

上例的代碼只需對DFSTraverse()方法和BFSTraverse()方法稍作修改,便可以遍歷非連通圖。

public void DFSTraverse() //深度優先遍歷
{
InitVisited(); //將visited標志全部置為false
foreach (Vertex<T> v in items)
{
if (!v.visited) //如果未被訪問
{
DFS(v); //深度優先遍歷
}
}
}
public void BFSTraverse() //廣度優先遍歷
{
InitVisited(); //將visited標志全部置為false
foreach (Vertex<T> v in items)
{
if (!v.visited) //如果未被訪問
{
BFS(v); //廣度優先遍歷
}
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved