Einzelnen Beitrag anzeigen

Benutzerbild von jamma-markus
jamma-markus

Registriert seit: 16. Okt 2004
Ort: Kempen
58 Beiträge
 
#1

Binären Suchbaum ausgeben

  Alt 13. Dez 2006, 17:03
Hallo zusammen.

ich möchte einen binären Suchbaum wie folgt in einer Memobox ausgeben.
Code:
......5
...3.....8
.1...4.6...9
..2.....7
die Punkte solltet ihr euch jetzt weg denken, die sind nur zur formatierung hier im forum da.

mein bisherige ansatz sieht so aus. b ist der zeiger auf einen knoten (beim ersten aufruf also ein pointer auf die 5). zeile gibt die aktuelle höhe im suchbaum an. left ist dazu da, um zu wissen, ob gerade ein linker teilbaum ausgegeben werden soll
Delphi-Quellcode:
procedure TForm1.anzeigen(b: TBaumzeiger; zeile: Integer; left: Boolean);
var temp, links: String;
  laenge : integer;
begin
  if b <> NIL
  then
    begin
      laenge := (90 div ((zeile + 1) * 2));
      if left
      then temp := Format('%' + inttostr(laenge) + 's%' + inttostr(laenge) + 's', [b^.inhalt, ' '])
      else temp := Format('%' + inttostr(laenge) + 's', [b^.inhalt]);
      if zeile = memo1.Lines.count
      then memo1.Lines.Add('');
      memo1.Lines[zeile] := memo1.Lines[zeile] + temp;
      anzeigen(b^.left, zeile+1, true);
      anzeigen(b^.right, zeile+1, false);
    end
  else
    begin
      laenge := (90 div (zeile + 1)) div 2;
      laenge := (90 div ((zeile + 1) * 4));
      if left
      then temp := Format('%' + inttostr(laenge) + 's%' + inttostr(laenge) + 's', [' ', ' '])
      else temp := Format('%' + inttostr(laenge) + 's', [' ']);
      if zeile = memo1.Lines.count
      then memo1.Lines.Add('');
      memo1.Lines[zeile] := memo1.Lines[zeile] + temp;
    end
end;
ich hoffe ihr könnt mir helfen.
  Mit Zitat antworten Zitat