AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi AVL Baum -> Umsortieren - brauche hilfe!!

AVL Baum -> Umsortieren - brauche hilfe!!

Offene Frage von "wonnebeekiwi"
Ein Thema von wonnebeekiwi · begonnen am 26. Mär 2009 · letzter Beitrag vom 26. Mär 2009
Antwort Antwort
wonnebeekiwi

Registriert seit: 23. Mär 2009
16 Beiträge
 
#1

AVL Baum -> Umsortieren - brauche hilfe!!

  Alt 26. Mär 2009, 18:17
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:
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;
danke!

ps nochmal der ganze code:
Angehängte Dateien
Dateityp: zip avl-baum_l_uft_581.zip (239,2 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
wonnebeekiwi

Registriert seit: 23. Mär 2009
16 Beiträge
 
#2

Re: AVL Baum -> Umsortieren - brauche hilfe!!

  Alt 26. Mär 2009, 22:12
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;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz