Python BFS广度优先搜索与DFS深度优先搜索
程序员文章站
2022-05-23 11:28:34
...
无向图
BFS广度优先搜索
graph = {
'A': ['B', 'C'],
'B': ['A', 'C', 'D'],
'C': ['A', 'B', 'D', 'E'],
'D': ['B', 'C', 'E', 'F'],
'E': ['C', 'D'],
'F': ['D']
}
def BFS(graph, s):
queue = []
queue.append(s)
seen = set() # seen数组看是否访问过此节点
seen.add(s)
while len(queue) > 0:
vertex = queue.pop(0)
nodes = graph[vertex] # graph['A']=['B', 'C']
for w in nodes:
if w not in seen:
queue.append(w)
seen.add(w)
print(vertex, end=' ')
BFS(graph, 'A')
输出
A B C D E F
DFS深度优先搜索
graph = {
'A': ['B', 'C'],
'B': ['A', 'C', 'D'],
'C': ['A', 'B', 'D', 'E'],
'D': ['B', 'C', 'E', 'F'],
'E': ['C', 'D'],
'F': ['D']
}
def BFS(graph, s):
stack = []
stack.append(s)
seen = set() # seen数组看是否访问过此节点
seen.add(s)
while len(stack) > 0:
vertex = stack.pop()
nodes = graph[vertex] # graph['A']=['B', 'C']
for w in nodes:
if w not in seen:
stack.append(w)
seen.add(w)
print(vertex, end=' ')
BFS(graph, 'A')
输出
A C E D F B
上一篇: PHP函数
下一篇: 跟老齐学Python之类的细节
推荐阅读
-
Java编程实现基于图的深度优先搜索和广度优先搜索完整代码
-
python广度优先搜索得到两点间最短路径
-
python深度优先搜索和广度优先搜索
-
DFS(一):深度优先搜索的基本思想
-
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
-
210课程表 II(拓扑排序广度优先搜索、深度优先搜索——困难)
-
可能是目前为止最为详细的深度优先搜索DFS和广度优先搜索BFS算法分析
-
数据结构与算法-----BFS与DFS(广度优先搜索与深度优先搜索)
-
数据结构与算法_深度优先搜索(DFS)与广度优先搜索(BFS)详解
-
Java数据结构与算法:图、图的概念、深度优先搜索DFS、广度优先搜索BFS、思路分析、代码实现