Leveys ensin läpikäynti (tai haku) kaavio on samanlainen kuin Leveys ensin puun läpikulku (katso menetelmä 2 Tämä postaus ).
Ainoa saalis tässä on, että toisin kuin puut, graafit voivat sisältää syklejä, joten voimme päästä samaan solmuun uudelleen. Jotta vältetään solmun käsittely useammin kuin kerran, käytämme loogista vierailtua taulukkoa. Yksinkertaisuuden vuoksi oletetaan, että kaikki kärjet ovat saavutettavissa aloituspisteestä. Esimerkiksi seuraavassa graafissa aloitamme kulkemisen kärjestä 2. Kun saavumme kärkeen 0, etsimme sen kaikki vierekkäiset kärjet. 2 on myös 0:n viereinen kärkipiste. Jos emme merkitse vierailtuja pisteitä, 2 käsitellään uudelleen ja siitä tulee ei-päättyvä prosessi. Seuraavan kaavion leveys ensimmäinen läpikulku on 2, 0, 3, 1. 
Suositus: Ratkaise se HARJOITELLA ensin, ennen kuin siirryt ratkaisuun.
Seuraavassa on yksinkertaisen Breadth First Traversalin toteutukset tietystä lähteestä.
Toteutus käyttää vierekkäisyysluettelon esitys kaavioista. STL 's luettelosäiliö käytetään tallentamaan luetteloita vierekkäisistä solmuista ja solmujonoista, joita tarvitaan BFS:n läpikulkua varten.
Python # Python3 Program to print BFS traversal # from a given source vertex. BFS(int s) # traverses vertices reachable from s. from collections import defaultdict # This class represents a directed graph # using adjacency list representation class Graph: # Constructor def __init__(self): # Default dictionary to store graph self.graph = defaultdict(list) # Function to add an edge to graph def addEdge(self, u, v): self.graph[u].append(v) # Function to print a BFS of graph def BFS(self, s): # Mark all the vertices as not visited visited = [False] * (max(self.graph) + 1) # Create a queue for BFS queue = [] # Mark the source node as # visited and enqueue it queue.append(s) visited[s] = True while queue: # Dequeue a vertex from # queue and print it s = queue.pop(0) print(s, end=' ') # Get all adjacent vertices of the # dequeued vertex s. # If an adjacent has not been visited, # then mark it visited and enqueue it for i in self.graph[s]: if not visited[i]: queue.append(i) visited[i] = True # Driver code if __name__ == '__main__': # Create a graph given in # the above diagram g = Graph() g.addEdge(0, 1) g.addEdge(0, 2) g.addEdge(1, 2) g.addEdge(2, 0) g.addEdge(2, 3) g.addEdge(3, 3) print('Following is Breadth First Traversal' ' (starting from vertex 2)') g.BFS(2) # This code is contributed by Neelam Yadav # This code is modified by Susobhan Akhuli> Lähtö
Following is Breadth First Traversal (starting from vertex 2) 2 0 3 1>
Aika monimutkaisuus: O(V+E), jossa V on graafin kärkien lukumäärä ja E on särmien lukumäärä
Aputila: O(V)
Katso täydellinen artikkeli aiheesta Leveys ensin -haku tai BFS kaaviolle Lisätietoja!