图的深度优先遍历非递归
时间: 2023-10-16 07:24:28 浏览: 110
图的深度优先遍历
图的深度优先遍历可以使用栈来实现非递归算法。
具体实现步骤如下:
1. 创建一个栈,并将起始节点入栈。
2. 创建一个 visited 集合,记录已经访问过的节点。
3. 当栈不为空时,取出栈顶节点,如果该节点没有被访问过,则将其标记为已访问,并将其所有未访问过的邻居节点入栈。
4. 重复步骤3,直到栈为空。
以下是示例 Python 代码实现:
```python
def dfs_iterative(graph, start):
stack = [start]
visited = set()
while stack:
node = stack.pop()
if node not in visited:
visited.add(node)
for neighbor in graph[node]:
if neighbor not in visited:
stack.append(neighbor)
return visited
```
其中,graph 表示图的邻接表表示方式,start 表示起始节点。函数返回已经访问过的节点集合。
阅读全文