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.