dfs python用法
时间: 2024-10-23 09:00:51 浏览: 10
DFS(深度优先搜索)是一种常用的图遍历算法,在Python中,我们可以使用递归的方式来实现深度优先搜索。首先,我们需要创建一个函数,通常叫做`dfs(node)`, 其中`node`是从哪一点开始的节点。以下是基本步骤:
1. 定义一个空列表`visited`用于存储已经访问过的节点。
2. 创建一个名为`stack`的栈数据结构,用于存储待访问的节点。
3. 将起始节点`node`入栈。
4. 当`stack`不为空时,进行循环:
a. 弹出当前节点`current`。
b. 如果`current`未访问过,标记为已访问,并对它执行所需的操作(如打印节点值等)。
c. 遍历`current`的所有邻居节点,将它们未访问过的邻居入栈。
5. 循环结束,返回结果或继续遍历其他分支。
这是一个简单的例子:
```python
def dfs(graph, node):
visited = [False] * len(graph)
stack = [node]
while stack:
current = stack.pop()
if not visited[current]:
visited[current] = True
# 对当前节点做操作,比如 print(f"Visiting {current}")
for neighbor in graph[current]:
if not visited[neighbor]:
stack.append(neighbor)
# 使用示例,假设graph是一个邻接列表表示的图
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
dfs(graph, 'A') # 从'A'开始搜索
```
阅读全文