图(Graph)深度优先搜索

深度优先搜索类似于树的先序遍历
**

  1. 首先访问起始顶点v
  2. 接着由v出发访问v的任意一个邻接且未被访问的邻接顶点w;
  3. 然后再访问与w邻接且未被访问的任意顶点y;
  4. 若w没有邻接且未被访问的顶点时,退回到它的上一层顶点v;
  5. 重复上述过程,直到所有顶点被访问为止;

**
递归+标记数组

bool visited[max];
void DFSTraverse(Graph G) {
	for (int i = 0; i < G.vexnum; i++) {
		visited[i] = false;
	}
	for (int i = 0; i < G.vexnum; i++) {
		if (!visited[i]) DFS(G, i);
	}
}

void DFS(Graph G, int v) {
	visit(v);
	visited[v] = true;
	for (w = FirstNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w)) {
		if (!visited[w]) DFS(G, w);
	}
}
上一篇:图的遍历-深度优先遍历


下一篇:LeeCode机器人的运动范围