Thema: Baum laden

Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Baum laden

  Alt 19. Nov 2012, 07:51
Wie sieht denn die Datei aus?

Und so nebenbei:
Du liest 'y' ein. Wenn da ein '*' ist, dann erzeugst Du zwei Äste, denen Du 'y' übergibst (vermutlich der Inhalt). Das war's dann.

Alleine der Umstand, das eine rekursive Datenstruktur statisch so eingelesen wird (iterativ, ohne Stack) zeigt schon, das Du hier etwas falsch machst.

Das Laden funktioniert logischerweise genauso wie das speichern.

So würde das z.B. gehen:
Delphi-Quellcode:
Procedure TBaumKnoten.SpeichereIn (Datei : TextDatei); // TStream wäre besser
Begin
  if Assigned (Self) then begin
    Writeln(Knoteninhalt);
    SpeichereIn (LinkerAst);
    SpeichereIn (RechterAst);
  else
    Writeln('LEER');
End;

Class Function TBaumKnoten.ErzeugeBaumAusDatei(Datei : TextDatei) : TBaumKnoten; // TStream wäre besser
Var
  s : String;
Begin
  ReadLn(Datei, s);
  if s='LEERthen
    result := nil
  else begin
    result := TBaumKnoten.Create;
    result.KnotenInhalt := s;
    result.LinkerAst := ErzeugeBaumAusDatei(Datei);
    result.RechterAst := ErzeugeBaumAusDatei(Datei);
  end
end;

// Speichern:
MeinBaum.Wurzel.SpeichereIn(Datei);
...
// Laden
MeinBaum.Wurzel := TBaumKnoten.ErzeugeBaumAusDatei(Datei);

// Besser wäre so eine Methode, aber die bekomme ich mit einem Kaffee am Montagmorgen nicht hin
// MeinBaum.Wurzel.LadeAus(Datei);
Aber es geht bestimmt noch viel einfacher.

Geändert von Furtbichler (19. Nov 2012 um 08:08 Uhr)
  Mit Zitat antworten Zitat