graph = {
"A": ["B", "C", "D"],
"B": ["A", "C", "E"],
"C": ["A", "B", "F"],
"D": ["A", "F"],
"E": ["B", "G"],
"F": ["C", "D", "H"],
"G": ["E"],
"H": ["F", "I"],
"I": ["H"]
}
def BFS(graph, s): #将广度优先遍历定义为函数,代入的参数有待遍历的数列和起始遍历的结点
queue = [] #设置一个列表存放待遍历的结点
queue.append(s)
seen = set() #存放已经访问的结点
seen.add(s)
while(len(queue) > 0): #列表不为空的时候开始遍历
vertex = queue.pop(0) #弹出列表中待遍历的结点赋值给vertex
nodes = graph[vertex] #将本次被遍历的点的所有邻接点放入nodes
for w in nodes: #遍历被弹出的结点的扩展结点
if w not in seen: #遍历扩展结点,若该节点没有被访问过,则添加到数列中,开始新一轮的遍历
queue.append(w)
seen.add(w) #将访问过的结点存入集合中
print(vertex) #输出本次访问的结点
BFS(graph, "A")
BFS广度优先遍历代码详解,python3
最新推荐文章于 2024-02-04 22:33:47 发布