it4baer
Goto Top

Rekursion statt "Tiefe" in die "Breite"

Hallo,

ich möchte Ordner "rekursiv" durchlaufen.

Anstelle von "in die Tiefe" möchte ich aber das ganze "in der Breite" durchlaufen

beispielstruktur

OrdnerA => SubA => SubSubA => SubSubSubA
OrdnerB => SubB => SubSubB => SubSubSubB
OrdnerC => SubC => SubSubC => SubSubSubC

wenn ich jetzt den Aufruf mache, geb mir Unterordner von Root, kommt eine Liste mit OrdnerA, OrdnerB, OrdnerC

wenn ich diese Liste durchlaufe, kann ich immer gleich in den Unterordner "rekursiv" springen, d.h. ich laufe in die Tiefe zuerst OrdnerA mit Subordner durch, dann OrdnerB,...

jetzt will ich aber "Ebene" für "Ebene" durchlaufen...
Also zuerst OrdnerA, dann OrdnerB, dann OrdnerC, dann Unterordner aus OrdnerA (SubA) dann Unterordner aus OrdnerB (SubB)...

irgendwie denk ich da falsch, aber immer wenn ich den Rekursiven ansatz mache, durchlaufe ich immer den Ersten Ordner in die Maximale Tiefe, bis ich dann mit dem 2. Ordner anfange usw...

Vielen Dank für jeden Tipp

der sematische Aufbau sieht etwa so aus

function durchsucheOrdner( Hauptordner ) {
  foreach( alle Ordner durchlaufen ) {
    if( Unterordner vorhanden )
     durchsucheOrdner( Unterordner );
  }
}
durchsucheOrdner( "root" );  

Content-ID: 351802

Url: https://administrator.de/forum/rekursion-statt-tiefe-in-die-breite-351802.html

Ausgedruckt am: 22.12.2024 um 23:12 Uhr

StefanKittel
StefanKittel 14.10.2017 um 22:31:13 Uhr
Goto Top
Moin,

das hängt davon ab was, wie und wo Du das machst...

Sprechen wir hier von Skripten oder Programmieren?
Standardmäßig geht rekursiv eigentlich immer erst den ersten Ordner durch.

Man kann das aber natürlich selber anders programmieren.
Du schreibst Die Ordner in eine Todo-Liste. Damit erreichst Du den gewünschten Effekt.

Stefan
StefanKittel
StefanKittel 14.10.2017 um 22:33:08 Uhr
Goto Top
Hallo,

ah, jetzt mit Beispiel.

Mit Todo-Liste nach dem 1. Aufruf für Root
OrdnerA
OrdnerB
OrdnerC

Nach dem 2. Durchlauf
OrdnerA\SubA
OrdnerA\SubB
OrdnerA\SubC
OrdnerB\SubA
etc

nennt sich FIFO

Stefan
it4baer
it4baer 14.10.2017 um 22:33:52 Uhr
Goto Top
nun ich kenne keine "echten" Unterschiede zwischen einem Script und einem Programm... der Ablauf sollte immer der selbe sein...

ich habe meinen "aktuellen" Ablauf nochmal oben eingefügt


=> ps. ich bin hier im JavaSCRIPT Forum
it4baer
it4baer 14.10.2017 aktualisiert um 22:39:06 Uhr
Goto Top
EDIT:
OU... nein... ich habe mich verlesen...
=> sorry, dein Beispiel beschreibt genau das was ich NICHT will

ich habe nochmal meine Ordnerstruktur angepasst <- war nicht schön so...
StefanKittel
Lösung StefanKittel 14.10.2017 um 22:39:57 Uhr
Goto Top
Hallo,

ah, nicht gesehen.
Ich wollte damit sagen, dass man einem Befehl in der Shell das nicht so einfach beibringen kann.
/r ist halt einfach /r

Ungefähr so

function durchsucheOrdner() { 
  foreach( alle Ordner in der Todo Liste ) { 
    if( Unterordner vorhanden ) 
     FuegeOrdnerZurTodoListeHinzu( Unterordner ); 
  } 
} 

FuegeOrdnerZurTodoListeHinzu( "root" );   
durchsucheOrdner();
it4baer
it4baer 14.10.2017 um 22:51:20 Uhr
Goto Top
perfekt... danke face-smile

das war garnicht mal so schwer