广度优先搜索算法
 
graph = {
    "A": ["B", "C"],
    "B": ["A", "C", "D"],
    "C": ["A", "B", "D", "E"],
    "D": ["B", "C", "E", "F"],
    "E": ["C", "D"],
    "F": ["D"],
    "G": None,
}
visited = dict.fromkeys(graph.keys(), False)
def BFSTraverse(graph):
    for key, value in visited.items():
        if not value:
            BFS(graph, key)
def BFS(graph, start):
    queue = [start]
    print(start, end=" ")
    visited[start] = True
    while queue:
        vertex = queue.pop(0)
        if (nodes := graph[vertex]) != None:
            for node in nodes:
                if not visited[node]:
                    visited[node] = True
                    queue.append(node)
                    print(node, end=" ")
    print()
if __name__ == "__main__":
    BFSTraverse(graph)
    parent = BFS1(graph, "E")
    print(parent)