速記圖的遍歷(DFS和BFS)
//鄰接表儲存
typedef struct ArcNode{ //邊表
int position; //頂點位置
struct ArcNode *next; //指向下一邊表節點
}ArcNode;
typedef struct VNode{ //頂點表
dataType data; //資料
ArcNode *first; //指向第一個邊表節點
}VNode,List[100];
typedef struct Graph{ //鄰接表
List vertices; //鄰接表頂點和邊的集合
int vnum,arcnum; //頂點數+邊數
}Graph;
/**
* 遞迴實現深度優先和廣度優先
*/
//深度優先
void DFS(Graph &G, int v){
visit(v);
visited[v] = 1;
if(w = firstNeighbor(G,v); w >= 0; w = NextNeighbor(G,v,w))
{
if(!visited[w]){
visit(w);
DFS(G , w);
}
}
}
//廣度優先,藉助佇列
void BFS(Graph &G, int v){
visit(v);
visited[v] = 1;
Queue q;
Enqueue(q,v);
if(w = firstNeighbor(G,v); w >= 0; w = NextNeighbor(G,v,w))
{
Dequeue(q);
if(!visited[w] || q){
Enqueue(q,e);
BFS(G , w);
}
}
相關文章
- python實現圖(基於圖的不同儲存方式)的深度優先(DFS)和廣度(BFS)優先遍歷Python
- L2-006 樹的遍歷(BFS)
- 聊聊演算法——BFS和DFS演算法
- DAG bfs + dfs 126,
- 【演算法】二叉樹、N叉樹先序、中序、後序、BFS、DFS遍歷的遞迴和迭代實現記錄(Java版)演算法二叉樹遞迴Java
- 求樹的直徑(BFS/DFS)
- js的map遍歷和array遍歷JS
- 單詞接龍---快速建圖----雙向BFS(廣度優先遍歷)
- JAVA圖搜尋演算法之DFS-BFSJava演算法
- leetcode刷題記錄:演算法(六)BFS&DFSLeetCode演算法
- 【資料結構與演算法筆記04】對圖搜尋策略的一些思考(包括DFS和BFS)資料結構演算法筆記
- Python字典的遍歷,包括key遍歷/value遍歷/item遍歷/Python
- ArrayList和hashMap的遍歷HashMap
- 藍橋杯-迷宮(BFS+DFS)
- 記錄遍歷方法
- 深度DFS 和 廣度BFS搜尋演算法學習演算法
- leetcode 103. 二叉樹的鋸齒形層序遍歷 BFS方法LeetCode二叉樹
- 演算法競賽——樹和圖的儲存與遍歷演算法
- dfs深度優先搜尋解決迷宮類問題(遍歷)
- 二叉樹的遍歷筆記二叉樹筆記
- JsonArray和JsonObject遍歷方法JSONObject
- 非遞迴實現先序遍歷和中序遍歷遞迴
- DOM 節點遍歷:掌握遍歷 XML文件結構和內容的技巧XML
- 【力扣】島嶼數量(體會一下dfs和bfs思路的實質)力扣
- 廣度優先遍歷圖解圖解
- js實現深度優先遍歷和廣度優先遍歷JS
- Oracle遊標遍歷%rowtype中的記錄Oracle
- TDictionary 的 遍歷
- 二叉樹的遍歷演算法【和森林的遍歷】【PHP 原始碼測試】二叉樹演算法PHP原始碼
- 如何遍歷 HashMap,遍歷HashMap 的 5 種最佳方式HashMap
- jQuery的遍歷結構設計之遍歷同胞jQuery
- jQuery的遍歷結構設計之遍歷祖先jQuery
- 圖的儲存與遍歷C++實現C++
- 圖論演算法遍歷基礎圖論演算法
- 遍歷陣列和物件的方法都有哪些?陣列物件
- 泛型方法、初始集合和集合的遍歷泛型
- 遍歷物件和陣列的方法總結物件陣列
- LeetCode C++ 1302. Deepest Leaves Sum【Tree/BFS/DFS】中等LeetCodeC++