bfs&dfs

如下图

image

bfs代码

点击查看代码
"""
bfs算法:
    存储:将每个节点的相邻节点用key:value的形式存在字典中
    遍历:从起点开始,先把起点(key)的值(value)取出,然后检查取出的值是否已经被执行过,没有则继续取(key)出其值(value)执行前边的步骤
"""
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, start):
    queue = [start]  # 待遍历的节点,是一个队列
    check = set(start)  # 已经走过的节点
    result = list()  # 结果
    while len(queue) > 0:
        node = queue.pop(0)  # 出队
        result.append(node)
        for el in graph[node]:
            if el not in check:  # 过滤已经走过的节点
                check.add(el)
                queue.append(el)  # 入队

    return result

dfs代码

dfs是将bfs中待遍历节点的存储结构从队列换成栈

点击查看代码
def dfs(graph, start):
    stack = [start]  # 待遍历的节点,是一个栈
    check = set(start)  # 已经走过的节点
    result = list()  # 结果
    while len(stack) > 0:
        node = stack.pop() # 出栈
        result.append(node)
        for el in graph[node]:
            if el not in check:  # 过滤已经走过的节点
                check.add(el)
                stack.append(el)

    return result

一个博客

https://blog.csdn.net/Huangkaihong/article/details/106131950

posted @ 2022-03-31 22:51  一枚码农  阅读(24)  评论(0编辑  收藏  举报