图的深度优先遍历DFS和广度优先遍历BFS(python实现)
程序员文章站
2022-03-03 11:24:06
...
def DFS(graph, s):
stack = []
stack.append(s)
seen = []
seen.append(s)
while stack:
vertex = stack.pop() # 栈,取出最后一个并删掉 先进后出
nodes = graph[vertex]
for w in nodes:
if w not in seen:
stack.append(w)
seen.append(w)
print(vertex)
def BFS(graph, s):
queue = [] # 建立队列
queue.append(s)
seen = [] # 记录已经遍历过的点
seen.append(s)
while queue:
vertex = queue.pop(0) # 队列,先进先出
nodes = graph[vertex]
for w in nodes:
if w not in seen:
queue.append(w)
seen.append(w)
print(vertex)
if __name__ == '__main__':
# 图节点
graph = {
'A': ['B', 'C'],
'B': ['A', 'C', 'D'],
'C': ['A', 'B', 'D', 'E'],
'D': ['B', 'C', 'E', 'F'],
'E': ['C', 'D'],
'F': ['D']
}
BFS(graph, 'A')
DFS(graph, 'A')
上一篇: 排列组合实现
下一篇: 排列组合---隔板法
推荐阅读
-
Python实现深度遍历和广度遍历的方法
-
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
-
PHP实现二叉树的深度优先与广度优先遍历方法
-
深度优先遍历,广度优先遍历实现对象的深拷贝
-
可能是目前为止最为详细的深度优先搜索DFS和广度优先搜索BFS算法分析
-
Java数据结构与算法:图、图的概念、深度优先搜索DFS、广度优先搜索BFS、思路分析、代码实现
-
【数据结构】图的遍历——深度优先搜索DFS、广度优先搜索BFS
-
数据结构与算法————图的遍历DFS深度优先搜索和BFS广度优先搜索
-
图 - DFS深度优先搜索和BFS广度优先搜索
-
(浙大-19-夏-数据结构学习笔记+代码)图的遍历+深度优先+广度优先(Graph)