BFS & DFS

Posted halo-zyh-go

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BFS & DFS相关的知识,希望对你有一定的参考价值。

 1 graph = {
 2     A:[B,C],
 3     B:[A,C,D],
 4     C:[A,B,D,E],
 5     D:[B,C,E,F],
 6     E:[C,D],
 7     F:[D]
 8 }
 9 def BFS(graph,start):
10     queue = []
11     queue.append(start)
12     seen = set()       #使用集合的效率要比使用list的效率高
13     seen.add(start)
14     while len(queue)>0:     #queue不为空的时候
15         vertex = queue.pop(0)
16         next_nodes = graph[vertex]
17         for w in next_nodes:
18             if w not in seen:
19                 queue.append(w)
20                 seen.add(w)     #将见过的添加进去
21         print(vertex)
22 def DFS(graph,start):
23     stack = []
24     stack.append(start)
25     seen = set()       #使用集合的效率要比使用list的效率高
26     seen.add(start)
27     while len(stack)>0:     #stack不为空的时候
28         vertex = stack.pop()        #由于是栈所以弹出最后一个元素
29         next_nodes = graph[vertex]
30         for w in next_nodes:
31             if w not in seen:
32                 stack.append(w)
33                 seen.add(w)     #将见过的添加进去
34         print(vertex)
35 print(BFS)
36 BFS(graph,E)
37 print(**100)
38 print(DFS)
39 DFS(graph,E)

 

以上是关于BFS & DFS的主要内容,如果未能解决你的问题,请参考以下文章

BFS&DFS遍历

BFS&DFS遍历

DFS & BFS

图的两种遍历-DFS&BFS

CSDN 年度征文|回顾 2021,展望 2022Java版高级数据结构图论基础(DFS&BFS)

DFS & BFS