Hiho,
ich weiß, dass es schon gaaanz viele Binärbaumthreads gibt, aber keienr behandelt das Probelm von mir xD Und dazu finden kann ich nichts, da es einfach zu speziell ist =/
Es geht um folgendes:
Ich soll einen Binärbaum erstellen. Dabei erstelle ich bei FormCreate zuerst die Wurzel, genannt "Baum". Nun würde ich gerne einen IntegerWert in den Baum einfügen, indem ich eben Kinder erstelle, die entweder links des oberen Teilbaums (wenn kleiner) oder rechts (wenn größer) angeordnet sind. Dann beginnt jedochd as Schlammassel. Erst lese ich in der
GUI einen Wert aus einem Edit Feld und überge diesen Parameter an die Fachklasse TBBaum. Dort habe ich meine Funktion Einfuegen.
Delphi-Quellcode:
procedure TBBaum.Einfuegen (n: Integer);
begin
if gibschluessel>n then
begin
if giblinks <> nil then
giblinks.Einfuegen(n)
else
setzelinks(create(n))
end
else
begin
if gibschluessel<n then
begin
if gibrechts <> nil then
gibrechts.Einfuegen(n)
else
setzerechts(create(n));
end;
end;
end;
Schluessel ist hierbei immer der jeweilige Integerwert, der im Teilbaumg espeichert werden soll.
Wenn ich das Programm mit F7 durchlaufen lasse, passiert eben das merkwürdige, dass er (angenommen der Schlüssel des aktuellen Baumes ist 5, und ich will eine 7 einfügen) er sagt: Okay, der Schöüssel ist <n (stimmt ja), dann schaut er ob rechts NIL ist (ja), aber er trotzdem wieder rekursiv das Einfuegen aufruft. =/
Ich habe sogar extra beim Creator hinzugeschrieben:
Delphi-Quellcode:
constructor TBBaum.Create (n: Integer);
begin
inherited create;
setzeschluessel(n);
setzelinks(nil);
setzerechts(nil);
end;
womit sogar fetgelegt wird, dass kein Nachfolger exisitert.
Ich hoffe man kann mir helfen^^ Ich sitze ejtzt schon 1 Woche an dem Problem und mein Informatik Lehrer sieht den Fehler auch nicht xD