深度優先遍歷的主要思想:首先以乙個未被訪問過的頂點作為起始頂點,沿當前頂點的邊走到未被訪問過的頂點;當沒有未被訪問的頂點時,則回到上乙個頂點,繼續試探試探訪問別的頂點,直到所有的頂點都被訪問過. 顯然,深度優先遍歷是沿著圖的某一條分支遍歷直到末端,然後回溯(su),再沿著另一條進行同樣的遍歷,直到所有的頂點都被訪問過為止.
深度優先遍歷dfs, 同樣適用於求出連通分量個數
code:
#include #include #include #define inf 999999
int book[101], e[101][101]; /// book 陣列代表頂點是否被訪問
int sum, n;
void dfs(int cur)
for(i = 1; i <= n; ++i) }
}int main()
else}}
for(i = 1; i <= m; ++i) /// 讀入頂點之間的邊
for(i = 1; i <= n; ++i) /// 遍歷,適用於統計連通分量個數
}system("pause");
return 0;
}
深度優先搜尋DFS C 實現
使用鄰接矩陣 棧的形式實現深度優先搜尋,棧中儲存訪問過的節點,後進先出的結構可以讓他回退搜尋未訪問過的節點。dfs,使用 鄰接矩陣 棧 實現 include include using namespace std define max verts 20 class vertex public boo...
深度優先遍歷 廣度優先遍歷
用棧進行儲存元素。訪問頂點 頂點入棧,以便記住它 標記頂點,以便不會再訪問它 2 訪問規則 a.如果可能,訪問乙個鄰接的未訪問頂點,標記它,併入棧。b.當不能執行a時 沒有鄰接的未訪問頂點 如果棧不為空,就從棧中彈出乙個頂點。c.如果不能執行規則a和b,就完成了整個搜尋過程。3 實現 基於以上規則,...
深度優先遍歷
第一步 從開始節點查詢可達節點,如果有沒到過的可達節點則第二部,否則第三步 第二部 便利到下乙個可達節點,記錄下該節點已經到達節點 第三步 回到上一步的節點再從第一步開始 乙個節點對應他的可達節點用map表示,map的key和value分別是integer和list 用來存放key對應的節點 遍歷過...