zoukankan      html  css  js  c++  java
  • python实现图的DFS和BFS

    python实现图的DFS和BFS

    img

    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=[s]
        seen={s}#检验是否遍历过
        while 1:
            if len(stack) > 0:
                index = stack.pop()
                for i in graph[index]:
                    if i not in seen:
                        stack.append(i)
                        seen.add(i)
                print(index)
            else:break
    DFS(graph,"A")
    

    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=[s]
        seen={s}#检验是否遍历过
        while 1:
            if len(queue) > 0:
                index = queue.pop(0)
                for i in graph[index]:
                    if i not in seen:
                        queue.append(i)
                        seen.add(i)
                print(index)
            else:break
    BFS(graph,"A")
    

    所以,bfs和dfs的代码区别仅仅在于一个是栈顶出一个是队列出????迷惑行为

  • 相关阅读:
    Spring的AOP深入理解
    枚举和注解学习笔记
    单例模式
    工厂设计模式
    网络编程
    多线程笔记
    IOI2021集训队作业
    计蒜客 mark
    51nod mark
    关于此博客
  • 原文地址:https://www.cnblogs.com/Azhenhs/p/13797557.html
Copyright © 2011-2022 走看看