Achtung:

Dieses Wiki, das alte(!) Projektwiki (projektwiki.zum.de)
wird demnächst gelöscht.

Bitte sichere Deine Inhalte zeitnah,
wenn Du sie weiter verwenden möchtest.


Gerne kannst Du natürlich weiterarbeiten

im neuen Projektwiki (projekte.zum.de).

Tiefensuche implementiert mit Rekursion: Unterschied zwischen den Versionen

Aus Projektwiki - ein Wiki mit Schülern für Schüler.
Wechseln zu: Navigation, Suche
(Implementierung)
Zeile 7: Zeile 7:
  
 
=== Implementierung===
 
=== Implementierung===
 +
void TiefenSuche(String BezNeu) // Anfang der Mehtode mit BezNeu als Eingangsparameter
 +
    {
 +
        int startNummer;
 +
startNummer =this.KnotenNummer(BezNeu);  // Der Variable startNummer wird der Index des Knotens zugewiesen
 +
        if(startNummer!=-1) // Es wird geprüft ob dieser Knoten überhaupt existiert
 +
        {
 +
            for(int i=0;i<aktuelleAnzahlKnoten;i++) // Bei allen Knoten…
 +
            {
 +
                knoten[i].MarikierungLoeschen();  //wird die Varialbe auf IstNichtBesucht gesetzt
 +
// Es ist auch anders möglich z.B. mit einem Array
 +
            }
 +
            System.out.println(" Starte Tiefensuche mit "+ BezNeu); //Info für den User
 +
            this.Besuchen (startNummer); //Start der Eigetlichen Tiefensuche
 +
            System.out.println("Fertig mit TiefenSuche"); //Info für den User
 +
        }
 +
        else
 +
        {
 +
            System.out.println("Knoten existiert nicht"); //Info für den User
 +
        }
 +
    }
 +
 +
 +
void Besuchen (int knotenNummer) //Hauptmethode
 +
    {
 +
        knoten[knotenNummer].MarikierungAendern(); //Dieser Knoten wird als Besucht angesehen
 +
        System.out.print("besuch " + knoten[knotenNummer].BeschreibungGeben() + "; "); //Info für den User
 +
        for(int  i =0;i<aktuelleAnzahlKnoten;i++)  //Die Adjazenzmatrix von links nach rechts durchlaufen
 +
        {
 +
            if(matrix[knotenNummer][i]>0&&knoten[i].MarkierungGeben()==false) //Wenn bei i ein
 +
//Knoten existiert und er noch nicht besucht wurde dann…
 +
            {           
 +
                Besuchen(i); //rekursiver Methodenaufruf
 +
                System.out.print("zurueck nach " + knoten[knotenNummer].BeschreibungGeben() + "; ");//Info für den User
 +
            }
 +
        }
 +
        System.out.println("fertig mit " + knoten[knotenNummer].BeschreibungGeben() + "; ");  //Info für den User
 +
 +
    }

Version vom 8. Februar 2014, 13:01 Uhr

In Bearbeitung

Ansporn

hier fehlt noch Text!

Zielsetzung

Implementierung

void TiefenSuche(String BezNeu) // Anfang der Mehtode mit BezNeu als Eingangsparameter

   {
       int startNummer; 
startNummer =this.KnotenNummer(BezNeu);  // Der Variable startNummer wird der Index des Knotens zugewiesen
       if(startNummer!=-1) // Es wird geprüft ob dieser Knoten überhaupt existiert
       {
           for(int i=0;i<aktuelleAnzahlKnoten;i++) // Bei allen Knoten…
           {
               knoten[i].MarikierungLoeschen();  //wird die Varialbe auf IstNichtBesucht gesetzt
// Es ist auch anders möglich z.B. mit einem Array
           }
           System.out.println(" Starte Tiefensuche mit "+ BezNeu); //Info für den User
           this.Besuchen (startNummer); //Start der Eigetlichen Tiefensuche
           System.out.println("Fertig mit TiefenSuche"); //Info für den User
       }
       else
       {
           System.out.println("Knoten existiert nicht"); //Info für den User
       }
   }


void Besuchen (int knotenNummer) //Hauptmethode

   {
       knoten[knotenNummer].MarikierungAendern();	//Dieser Knoten wird als Besucht angesehen
       System.out.print("besuch " + knoten[knotenNummer].BeschreibungGeben() + "; "); //Info für den User
       for(int  i =0;i<aktuelleAnzahlKnoten;i++)  //Die Adjazenzmatrix von links nach rechts durchlaufen
       {
           if(matrix[knotenNummer][i]>0&&knoten[i].MarkierungGeben()==false) //Wenn bei i ein 
//Knoten existiert und er noch nicht besucht wurde dann… 
           {            
               Besuchen(i); 	//rekursiver Methodenaufruf
               System.out.print("zurueck nach " + knoten[knotenNummer].BeschreibungGeben() + "; ");//Info für den User
           } 
       }
       System.out.println("fertig mit " + knoten[knotenNummer].BeschreibungGeben() + "; ");  //Info für den User
   }