首页 > 编程语言 > 详细

Python实现BFS,DFS

时间:2019-10-24 17:47:16      阅读:223      评论:0      收藏:0      [点我收藏+]

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) # 向list添加元素,用append()
    seen = set() # 此处为set, python里set用的是hash table, 搜索时比数组要快。
    seen.add(s) # 向set添加函数,用add()
    while (len(queue) > 0):
        vertex = queue.pop(0)  #提取队头
        nodes = graph[vertex]  #获得队头元素的邻接元素
        for w in nodes:
            if w not in seen:
                queue.append(w) #将没有遍历过的子节点入队
                seen.add(w) #标记好已遍历
        print("当前出队的是:",vertex)

BFS(graph, ‘A‘)

技术分享图片

 

 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 DFS(graph, s):
    stack=[]
    stack.append(s) # 向list添加元素,用append()
    seen = set() # 此处为set, python里set用的是hash table, 搜索时比数组要快。
    seen.add(s) # 向set添加函数,用add()
    while (len(stack) > 0):
        vertex = stack.pop() # 弹出最后一个元素
        nodes = graph[vertex]
        for w in nodes:
            if w not in seen:
                stack.append(w)
                seen.add(w)
        print("当前出栈的是",vertex)
DFS(graph, ‘A‘)

技术分享图片

 

 

 

 


谢谢灯笼up的讲解,豁然开朗啊喂 :https://www.bilibili.com/video/av25763384/?spm_id_from=333.788.b_7265636f5f6c697374.2

 

Python实现BFS,DFS

原文:https://www.cnblogs.com/chrysanthemum/p/11733644.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!