Моя текущая реализация выполняет поиск по всему списку узлов каждый раз, когда я иду по ребру, чтобы найти целевой узел.
Код: Выделить всё
public void dfsSearch(String start){
List besuchliste = new ArrayList();
for(int i = 0; i < getKnotenListe().size();i++){
Knoten knoten = getKnotenListe().get(i);
if(knoten.get_name().equals(start)){
hilfMethodea(knoten,besuchliste);
}
}
}
private void hilfsMethode(Knoten aktuellerknoten, List besuchsliste){
besuchsliste.add(aktuellerknoten.get_name());
System.out.println("Besuchter Knoten" + aktuellerknoten.get_name());
for(int i = 0; i < aktuellerknoten.get_kanten().size();i++){
Kante kante = aktuellerknoten.get_kanten().get(i);
String ziel = String.valueOf(kante.get_ziel());
if(!besuchsliste.contains(ziel)){
for (int j = 0; j < getKnotenListe().size(); j++){
Knoten knoten = getKnotenListe().get(i);
if(knoten.get_name().equals(ziel)){
hilfMethodea(knoten,besuchsliste);
break;
}
}
}
}
Мне интересно:
- Есть ли более чистый способ определения целевых узлов?
- Должен ли я использовать Map для более быстрого поиска?
- Есть ли дополнительные улучшения в отношении лучших практик DFS в Java?
Мобильная версия