Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

AW: Liste von Arrays

  Alt 30. Apr 2016, 22:09
Eine Möglichkeit (garantiert ohne MemLeaks) wäre
*snip*
Aber das ist ja auch suboptimal. Da wird ja für jeden Knoten eine neue Stringlist erstellt, und dann steigen die Add-Aufrufe mit der Knotenanzahl stark (quadratisch?) an...

Besser wäre es imho, die StringListe als Parameter zu übergeben. Der Aufrufer muss da vorher ein gültiges Objekt hineinstecken und hat konsequenterweise danach die Aufgabe, dasselbe aufzuräumen.
In etwa so:
Delphi-Quellcode:
function TBaum.Traversiere( aElement: TElement, const InhaltsListe: TStringList) : TStringList;
begin
   if Assigned(aElement) then
   begin
      Traversiere(aElement.gibSohn(ToLinks), InhaltsListe));

      if aElement <> Wurzel then // Warum eigentlich das hier??
        InhaltsListe.Add(aElement.gibInhalt);

      Traversiere(aElement.gibSohn(ToRechts), InhaltsListe);
   end;
   Result := InhaltsListe
end;
  Mit Zitat antworten Zitat