![]() |
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:
Dabei ist a die zahl die in dem Baum eingefügt werden soll.
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; 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 |
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 |
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 |
Re: optische darstellung von binären Bäumen
Zitat:
|
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