AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Binärer Baum mit Klasse

Ein Thema von ford42 · begonnen am 8. Dez 2015 · letzter Beitrag vom 17. Dez 2015
Antwort Antwort
ford42

Registriert seit: 2. Okt 2015
60 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Binärer Baum mit Klasse

  Alt 11. Dez 2015, 07:59
Erstmal dankeschön.

Abgesehen von der Formatierung?
Was findest du an der Formatierung nicht schön?

Hast Du noch Form4 in der Klasse.
Hast Recht, hab ich nun geändert.

Char 'r' und 'l' ???
da steht r für rechts und l für links. Da habe ich Char genommen, da Char weniger verbraucht als ein String. War das ein falscher Gedanke?

Warum Class var... Sollte man - bis auf wenige stellen - drauf verzichten.
Weil es davor nicht funktioniert hat und ich dachte, dass es sonst pro Objekt eine sperate Variable/Variablenwert gibt und das will ich ja nicht oder liege ich da falsch?

" if Form4.Loeschen('alles') then "
Ich weiß, dass ist unschön gelöst, aber ich weiß nicht wie ich es an der Stelle besser lösen kann.
Kann mir da bitte jemand weiterhelfen/einen Tipp geben?

Sorry aber den Code kann man kaum lesen!
Brauchst dich nicht entschuldigen, nur aus Kritik kann ich lernen, deshalb habe ich ja hier nachgefragt!

Dankeschön

EDIT: Die LoescheUndFuegeEin-Methode war bei der vorherigen verbuggt
Angehängte Dateien
Dateityp: zip BaumKlasseGetrennt.zip (81,5 KB, 2x aufgerufen)

Geändert von ford42 (11. Dez 2015 um 10:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.164 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Binärer Baum mit Klasse

  Alt 11. Dez 2015, 10:58
Erstmal dankeschön.

Abgesehen von der Formatierung?
Was findest du an der Formatierung nicht schön?
Entspricht nicht so dem "Üblichen"... Ok Ich formatieren meinen Source auch anders als die Norm...

Um sowas wie "Rechts" und "Links" zu speichern nimm einen eigenen Typen...

Delphi-Quellcode:
Type
  TLaufrichtung = (lrKeine,lrRechts,lrLinks);
Es ist im Zip Nie die Datei BaumklasseUnit.dfm dabei... Daher kann man es nicht testen - jedenfalls nicht so einfach
Angehängte Dateien
Dateityp: pas BinaererBaum.pas (23,5 KB, 8x aufgerufen)

Geändert von Mavarik (11. Dez 2015 um 11:05 Uhr)
  Mit Zitat antworten Zitat
ford42

Registriert seit: 2. Okt 2015
60 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Binärer Baum mit Klasse

  Alt 11. Dez 2015, 11:50
Ok dankeschön.
Habs nun mit dem Typen gemacht.

Und nun ists auch mit der BaumklasseUnit.dfm verpackt.

LG ford42
Angehängte Dateien
Dateityp: zip BaumKlasseGetrennt.zip (82,4 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
ford42

Registriert seit: 2. Okt 2015
60 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Binärer Baum mit Klasse

  Alt 16. Dez 2015, 07:23
Den Bug kann ich aber trotzdem nicht fixen, weil ich nicht rausbekomme wie er entsteht.

Wenn ich wild auf der Tastatur irgendwelche Werte eingebe, rechts links, verschiedene Lösch-Funktionen ausführe und dann wieder wohin navigiere kommt z. B. der Fehler, den ich unten angehängt habe.

Aber wie bekomm ich jetzt raus wodurch er entsteht?



Vielen Dank
LG ford42

EDIT: Nun auch gescheit formatiert (aber die Klammern find ich so eig schöner, deshalb hab ich sie so gelassen)
Und eig müsste es jetzt alles bugfrei laufen!
Angehängte Dateien
Dateityp: zip BaumKlasseGetrennt.zip (82,6 KB, 1x aufgerufen)

Geändert von ford42 (16. Dez 2015 um 13:45 Uhr)
  Mit Zitat antworten Zitat
ford42

Registriert seit: 2. Okt 2015
60 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Binärer Baum mit Klasse

  Alt 17. Dez 2015, 12:53
Argh, ich hab einen Denkfehler in einer Methode (entweder TNodeTest.LoescheUndFuegeEin oder/und TNodeTest.EinzelnerKnotenLoeschen).
Ich habe nun beide Methoden nochmal neu geschrieben (Algo aufgestellt und umgesetzt) und es geht immer noch nicht richtig.

Was nicht geht:
Es sieht so aus, dass manchmal nicht nur ein Knoten sondern alle gelöscht weden bzw manche einfach abgehangen werden. Also z.b. PStandNode.FLinks := nil; gemacht wird. Denn der Destruktor wird nicht immer angeschmissen, aber ich kann dann nicht mehr zu allen nodes navigieren und sichtbar sind sie auch nicht mehr (im TreeView).

Sry, ich weiß, dass ich nicht gut erklären kann. Deshalb hänge ich mein Projekt wieder an. Gebt ein paar zufällige Zahlen ein, löscht ein paar Mal einzelne Knoten, die ein oder zwei Kinder haben und mit etwas Glück seht ihr, was ich meine.


Vielen Dank
LG ford42

EDIT: Hab bisher 2 Fehler gefunden:

1.:
Code:
if Assigned(PWurzelBufferNode.FLinks) and Assigned(PWurzelBufferNode.FRechts) then
anstatt
Code:
if Assigned(PWurzelBufferNode.FLinks) and Assigned(PWurzelNode.FRechts) then

2.:
Code:
until (BufferStack.Count = 0) and ((PBufferNode.FRechts = nil) and (PBufferNode.FLinks = nil));
anstatt
Code:
until (BufferStack.Count = 0) or ((PBufferNode.FRechts = nil) or (PBufferNode.FLinks = nil));
Angehängte Dateien
Dateityp: zip BaumKlasseGetrennt.zip (83,4 KB, 2x aufgerufen)

Geändert von ford42 (17. Dez 2015 um 14:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 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