图的深度优先搜索非递归c++
时间: 2023-12-07 19:36:22 浏览: 90
图深度优先搜索C++
4星 · 用户满意度95%
图的深度优先搜索非递归实现可以使用栈来实现。具体步骤如下:
1. 创建一个栈,将起始顶点入栈,并标记为已访问。
2. 当栈不为空时,取出栈顶元素,访问该顶点,并将其未被访问的邻接点入栈,并标记为已访问。
3. 重复步骤2,直到栈为空。
以下是C++代码实现:
```
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
void DFS(vector<vector<int>>& graph, int start) {
stack<int> s;
vector<bool> visited(graph.size(), false);
s.push(start);
visited[start] = true;
while (!s.empty()) {
int cur = s.top();
s.pop();
cout << cur << " ";
for (int i = 0; i < graph[cur].size(); i++) {
int next = graph[cur][i];
if (!visited[next]) {
s.push(next);
visited[next] = true;
}
}
}
}
int main() {
vector<vector<int>> graph = {{1, 2}, {0, 2, 3}, {0, 1, 3}, {1, 2, 4}, {3, 5}, {4}};
DFS(graph, 0);
return 0;
}
```
阅读全文