深度优先python
时间: 2023-10-29 08:00:33 浏览: 79
深度优先搜索(DFS)是一种常用的图遍历算法,也可以用于树结构的遍历。在 Python 中,我们可以使用递归或者栈来实现深度优先搜索。
下面是一个使用递归实现的深度优先搜索的示例:
```python
def dfs(graph, start, visited=None):
if visited is None:
visited = set()
visited.add(start)
print(start)
for neighbor in graph[start]:
if neighbor not in visited:
dfs(graph, neighbor, visited)
```
这里,`graph` 是一个表示图的字典,键表示节点,值表示与该节点相邻的节点列表。`start` 是起始节点,`visited` 是一个记录已访问节点的集合。
我们可以调用 `dfs(graph, start)` 来执行深度优先搜索,并打印访问顺序。
注意,上述示例中没有处理非连通图和环的情况。在实际应用中,我们可能需要额外的处理来应对这些情况。
希望对你有所帮助!如果你有更多问题,请继续提问。
相关问题
广度优先深度优先python 代码实现
好的,下面是Python实现广度优先搜索和深度优先搜索的示例代码:
广度优先搜索:
```python
from collections import deque
def bfs(graph, start, end):
queue = deque()
queue.append(start)
visited = set()
while queue:
node = queue.popleft()
if node == end:
return True
visited.add(node)
for neighbor in graph[node]:
if neighbor not in visited:
queue.append(neighbor)
return False
```
深度优先搜索:
```python
def dfs(graph, start, end, visited=None):
if visited is None:
visited = set()
visited.add(start)
if start == end:
return True
for neighbor in graph[start]:
if neighbor not in visited:
if dfs(graph, neighbor, end, visited):
return True
return False
```
这里的`graph`是一个字典,表示图的邻接表,`start`是起点,`end`是终点。广度优先搜索使用了双端队列`deque`,深度优先搜索使用了递归。
深度优先搜索 python
深度优先搜索(Depth First Search, DFS)是一种用于遍历或搜索树或图的算法。在Python中,可以使用递归或栈来实现深度优先搜索。
以下是一个使用递归实现深度优先搜索的示例代码:
```python
def dfs(graph, node, visited):
if node not in visited:
print(node)
visited.add(node)
neighbors = graph[node]
for neighbor in neighbors:
dfs(graph, neighbor, visited)
# 示例图的邻接表表示
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
visited = set()
dfs(graph, 'A', visited)
```
这段代码会按照深度优先的顺序遍历并打印图中的节点。其中,`graph` 是图的邻接表表示,`node` 是当前节点,`visited` 是已经访问过的节点集合。在每次递归调用时,我们检查当前节点是否已经被访问过,如果没有,则将其加入到已访问集合中,并递归地对其未访问的邻居节点进行深度优先搜索。
希望这个示例对你有帮助!如果你还有其他问题,请随时提问。
阅读全文