findVertex() Breitensuche Implementiert

This commit is contained in:
2021-01-18 14:34:11 +01:00
parent fe59c35d59
commit 0dde01169f
17 changed files with 203 additions and 1 deletions

View File

@@ -44,7 +44,7 @@ public class Breitensuche {
g.setAllVertexMarks(false); // Markierungen zurücksetzen
Queue<Vertex> searchQueue = new Queue<>(); // Speicher für zu bearbeitende Knoten erstellen
// TODO: Implementiere die Breitensuche als iterativen Algorithmus:
// Finished: Implementiere die Breitensuche als iterativen Algorithmus:
// Reihe dazu die noch nicht markierten Nachbarknoten in die
// searchQueue ein und arbeite die Knoten in ihr der Reihe nach
// ab, bis die Queue leer ist, oder der gesuchte Knoten
@@ -54,6 +54,29 @@ public class Breitensuche {
// TODO: Wenn dein Algorithmus funnktioniert, kopiere die Methode und
// Erstelle Varianten, bei denen die Reihenfolge der Nachbarknoten
// modifiziert ist. Dazu
if(g.getVertex("Köln").getID().equals(pVertexID)){
return true;
} else {
g.getVertex("Köln").setMark(true);
searchQueue.enqueue(g.getVertex("Köln"));
while(!searchQueue.isEmpty()){
Vertex v = searchQueue.front();
List<Vertex> ngbrs = g.getNeighbours(v);
ngbrs.toFirst();
while(ngbrs.hasAccess()){
if(!ngbrs.getContent().isMarked()){
if(ngbrs.getContent().getID().equals(pVertexID)){
return true;
}
ngbrs.getContent().setMark(true);
searchQueue.enqueue(ngbrs.getContent());
}
ngbrs.next();
}
searchQueue.dequeue();
}
}
return false;
}