Ich habe ein Online-Beispiel gefunden, jedoch ist nur die Reihenfolge der BFS-Elemente nicht ausreichend für die Berechnung. Nehmen wir an, die Wurzel ist die erste Ebene des BFS-Baums, dann sind die Kinder die zweite Ebene usw. Wie kann ich wissen, in welcher Ebene sie sich befinden und wer der Elternteil jedes Knotens ist (ich werde ein Objekt erstellen) um seine Eltern- und Baumebene zu speichern)?Python Implementieren Breitensuche
# sample graph implemented as a dictionary
graph = {'A': ['B', 'C', 'E'],
'B': ['A','D', 'E'],
'C': ['A', 'F', 'G'],
'D': ['B'],
'E': ['A', 'B','D'],
'F': ['C'],
'G': ['C']}
# visits all the nodes of a graph (connected component) using BFS
def bfs_connected_component(graph, start):
# keep track of all visited nodes
explored = []
# keep track of nodes to be checked
queue = [start]
# keep looping until there are nodes still to be checked
while queue:
# pop shallowest node (first node) from queue
node = queue.pop(0)
if node not in explored:
# add node to list of checked nodes
explored.append(node)
neighbours = graph[node]
# add neighbours of node to queue
for neighbour in neighbours:
queue.append(neighbour)
return explored
bfs_connected_component(graph,'A') # returns ['A', 'B', 'C', 'E', 'D', 'F', 'G']
ist es möglich, auch ihre Eltern zu finden? –
Ich habe ihre Eltern gefunden, vielen Dank. Aber es ist besser, 'deque' zu verwenden, jedoch kann mein Knoten im Graph eine ganze Zahl sein, die' deque' nicht erlaubt ist. Weißt du, wie das zu beheben ist? –