![]() |
AVL Baum -> Umsortieren - brauche hilfe!!
Liste der Anhänge anzeigen (Anzahl: 1)
hi.
ich komm hier nicht weiter: ich fuege zb 20 elemente ein, es kommen aber nur ne hanvoll dabei raus. zuerst dachte ich dass das daran liegen koennte dass das die gleichen sind. ist aber was anderes. hab die gleichen gezaehlt und es fehlen deutlich mehr. ich bin mir jetzt sehr sicher das die elemente bei den rotationen drauf gehen... wahrscheinlich ist da was falsch aber ich sehs nicht. waere nett wenn sich jemand die zeit nehmen wuerde das mal zu ueberfliegen.
Delphi-Quellcode:
danke!
procedure TAVLBaum.KntnEinfuegen(pItem: TItem);
begin if Leer then begin Wurzel := pItem; links := TAVLBaum.create; rechts := TAVLBaum.create; end else if Wurzel.isGreater(pItem) then begin links.KntnEinfuegen(pItem); Balance := rechts.Hoehe - links.Hoehe; case Balance of 2,-2: Sortieren; end; end else begin rechts.KntnEinfuegen(pItem); Balance := rechts.Hoehe - links.Hoehe; case Balance of 2,-2: Sortieren; end; end; result := True; end; procedure TAVLBaum.Sortieren; begin if Balance = -2 then begin if links.Balance = -1 then LLDrehung else LRDrehung; end else begin if rechts.Balance = 1 then RRDrehung else RLDrehung; end; end; procedure TAVLBaum.LLDrehung; begin links.rechts := TAVLBaum.create(Wurzel); Self := links; end; procedure TAVLBaum.LRDrehung; begin links.rechts.links := TAVLBaum.create(links.Wurzel); links := links.rechts; LLDrehung; end; procedure TAVLBaum.RRDrehung; begin rechts.links := TAVLBaum.create(Wurzel); Self := rechts; end; procedure TAVLBaum.RLDrehung; begin rechts.links.rechts := TAVLBaum.create(rechts.Wurzel); rechts := rechts.links; RRDrehung; end; ps nochmal der ganze code: |
Re: AVL Baum -> Umsortieren - brauche hilfe!!
habs noch ein wenig umgeschrieben funktioniert aber noch nicht. bin ratlos:
Delphi-Quellcode:
procedure TAVLBaum.LLDrehung;
var Zeiger: TAVLBaum; begin Zeiger := links; links := Zeiger.rechts; Zeiger.rechts := Self; Balance := 0; Self := Zeiger; { links.rechts := TAVLBaum.create(Wurzel); Self := links;} end; procedure TAVLBaum.LRDrehung; var Zeiger1, Zeiger2: TAVLBaum; begin Zeiger1 := links; Zeiger2 := Zeiger1.rechts; Zeiger1.rechts := Zeiger2.links; Zeiger2.links := Zeiger1; links := Zeiger2; { links.rechts.links := TAVLBaum.create(links.Wurzel); links := links.rechts;} LLDrehung; end; procedure TAVLBaum.RRDrehung; var Zeiger: TAVLBaum; begin Zeiger := rechts; rechts := Zeiger.links; Zeiger.links := Self; Balance := 0; Self := Zeiger; { rechts.links := TAVLBaum.create(Wurzel); Self := rechts;} end; procedure TAVLBaum.RLDrehung; var Zeiger1, Zeiger2: TAVLBaum; begin Zeiger1 := rechts; Zeiger2 := Zeiger1.links; Zeiger1.links := Zeiger2.rechts; Zeiger2.rechts := Zeiger1; rechts := Zeiger2; { rechts.links.rechts := TAVLBaum.create(rechts.Wurzel); rechts := rechts.links;} RRDrehung; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 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