基於python模擬bfs和dfs程式碼例項
阿新 • • 發佈:2020-11-20
BFS
""" # @Time : 2020/11/8 # @Author : Jimou Chen """ # 廣搜 def bfs(graph,start): queue = [start] # 先把起點入佇列 visited = set() # 訪問國的點加入 visited.add(start) while len(queue): vertex = queue.pop(0) # 找到佇列首元素的連線點 for v in graph[vertex]: if v not in visited: queue.append(v) visited.add(v) # 列印彈出佇列的該頭元素 print(vertex,end=' ') if __name__ == '__main__': graph = { 'A': ['B','D','I'],'B': ['A','F'],'C': ['D','E','D': ['A','C','E': ['C','H'],'F': ['B','G': ['C','H': ['E','F','G'],'I': ['A','C'] } bfs(graph,'A')
A B D I F C H E G
Process finished with exit code 0
DFS
""" # @Time : 2020/11/8 # @Author : Jimou Chen """ # 深搜 def dfs(graph,start): stack = [start] visited = set() visited.add(start) while len(stack): vertex = stack.pop() # 找到棧頂元素 for v in graph[vertex]: if v not in visited: stack.append(v) visited.add(v) print(vertex,'C'] } dfs(graph,'E')
E H G F B A I D C
Process finished with exit code 0
總結
很明顯一個用了佇列,一個用了棧
利用python語言優勢,只需改動pop即可
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。