Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi optische darstellung von binären Bäumen (https://www.delphipraxis.net/17113-optische-darstellung-von-binaeren-baeumen.html)

Gregor00 28. Feb 2004 13:36


optische darstellung von binären Bäumen
 
Guten Tag zusdammen, ich bins mal wieder

Also Folgendes zu meinem problem:
Ich habe hier einen Binären Baum (sortiert, nicht ausgewogen)programmiert, hier ist der Quelltext

Delphi-Quellcode:
Zeiger = ^Knoten;
  Knoten = Record
             Links: Zeiger;
             Rechts: zeiger;
             Inhalt: Integer;
           end;

var
  Form1: TForm1;
  a: Integer;
  Wurzel: Zeiger;
implementation

{$R *.DFM}

Procedure Einfuege (zahl: Integer; var Lauf: Zeiger);
  Begin
    If Lauf = Nil Then
      begin
        New(lauf);
        With Lauf^ do
          Begin
            Inhalt:= zahl;
            links:= Nil;
            rechts:= Nil;
          end;
      end
    else
      if Zahl < Lauf^.Inhalt then Einfuege (zahl, lauf^.Links)
        else
          If Zahl > lauf^.Inhalt then Einfuege (zahl, Lauf^.Links)
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Wurzel:= NIL;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Zahl: Integer;
begin
  a:= StrToInt(Edit1.Text);
  Einfuege (a, Wurzel);
end;
Dabei ist a die zahl die in dem Baum eingefügt werden soll.
ber den Button1 soll der baum aufgebaut werden, d.h. die Zahl, in Edit1 angegeben wird (= a) soll in den baum einsortiert werden.
Das problem läuft sacheinbar auch, bloß habe ich keine ahnung, wie ich den baum optisch ausgeben soll. Bis jetzt bleibt Form1 immer grau.
Kann hier jemand eingie optisch ansprechende, jedoch nicht zu schwer umzusetzende Ideen geben, wie ich den ganzen baum auf Form1 darstellen könnte??
erste ideen von mir waren irgendwie mit Canvas was zu machen, kam dabei aber nicht weiter...eine zweite idee war ganz viele labels zu benutzen, das erschien mir aber 1) zu kompliziert, 2) würde es nicht besonders aussehen

also ich hoffe ihr habt alles verstanden danke schonmal für alle Vorschläge

cu gregor

Martin Vieregg 1. Mär 2004 10:03

Re: optische darstellung von binären Bäumen
 
Hallo Gregor,

ich denke Du hast zwei Möglichkeiten:

(1) Du verwendest tTreeView, also eine Baumdarstellung ähnlich dem Windows Explorer zum auf- und zuklappen.

(2) Oder Du programmierst doch selber einen grafischen Output. Hierfür solltest Du in tPaintbox zeichnen (dann muß man sich nicht um das Neuzeichnen beim Wiederaufdecken der Form kümmern). Also Paintbox1.Canvas.Moveto, Lineto, DrawRect, TextOut. Um den Baum zu zeichnen, bietet sich eine rekursive Prozedur an, die den Hauptpunkt zeichnet und dann zum Zeichnen der zwei Unterpunkte sich selbst zweimal aufruft. (Um rekursiven Code erzeugen zu dürfen, gibt es ein Compilersetting.)

Martin Vieregg

Gregor00 8. Mär 2004 17:56

Re: optische darstellung von binären Bäumen
 
Hallo Martin
thx für die Antwort schonmal...

Ja, sowas ähnliches hab ich mir schon vorgestellt allerdings sind noch ein paar Fragen offen:

also ich habe mir die rekursive Funktion folgendermaßen vorgestellt: Es wird ein gleichwinkliges Dreieck gezeichnet, an deren Spitzen jeweils ein Kreis gezeichnet wird. (In diesen Kreis soll dann die Zahl geschrieben werden). An die kreise jeweils links und rechts soll dan je ein weiteres dreieck gezeichnet werden, wieder mit je einem kreis links und rechts. etc....
Die dreieck werden natürlich farbig nicht ausgefüllt und die untere Querlinien (welche parallel zur Form sind) müssen noch weg gemacht werden.

so, ich hoffe soweit ist die Rekursion klar (muss ich erst noch in einen Quelltext umnsetzen)
jetzt ist aber die Frage, wie ich die entsprechende zahl in den entsprechen kreis bekomme!

Außerdem ist mir ncht ganz klar was Drawrect ist. ich hab in der onlinehilfe nachgeschaut aber nichts gefunden....

thx schonmal für alle weiteren antworten und sorry wenn sich das ganze ein wenig kompliziert anhört...

mfg Gregor

Luckie 8. Mär 2004 17:58

Re: optische darstellung von binären Bäumen
 
Zitat:

Zitat von Martin Vieregg
(2) Oder Du programmierst doch selber einen grafischen Output. Hierfür solltest Du in tPaintbox zeichnen (dann muß man sich nicht um das Neuzeichnen beim Wiederaufdecken der Form kümmern).

Doch gerade da muss man es. Aber mit einem Bitmap Speicher sollte das kein Problem sein.

xineohp 8. Mär 2004 18:46

Re: optische darstellung von binären Bäumen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi,

Ich hab mal was in der Richtung geproggt, kannst es dir ja mal anschaun. Is warscheinlich nicht perfekt, aber für meinen Infolehrer hats gereicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz