package algorithmen; import java.util.List; import java.util.ArrayList; import java.util.Collections; import java.nio.file.*; import graph.*; /** * Dieser Algorithmus nummeriert alle Knoten des Graphen. * Algorithmus: Tiefensuche rekursiv * * @version 7.1 from 12.02.2025 * @author Thomas Schaller */ public class GraphAlgo_TiefensucheRek extends GraphAlgo { // Anfang Attribute public String getBezeichnung() { return "Nummerierung (Tiefensuche rekursiv)"; } // Anfang Methoden public void fuehreAlgorithmusAus() throws InterruptedException { if (g.getAnzahlKnoten()==0) { return; } nummeriere(getStartKnoten(), 0); } // end private int nummeriere(Knoten k, int nr) throws InterruptedException { // Abbruchbedingung if(k.isBesucht()) { info("Untersuche "+g.getKnoteninfo(k,false)+" => ist schon besucht"); } else { nr++; k.setBesucht(true); k.setWert(nr); info("Untersuche "+g.getKnoteninfo(k,false)+" => bekommt Nummer: "+nr); step(); info("Untersuche Nachbarn von "+g.getKnoteninfo(k,false)); infoIndentMore(); List nachbarn = g.getNachbarknoten(k); for(Knoten n : nachbarn) { nr = nummeriere(n,nr); } info("Keine weiteren Nachbarn von "+g.getKnoteninfo(k,false)); infoIndentLess(); step(); } return nr; } // Ende Methoden }