AVL-fa építése
Az AVL-fa (Adelszon-Velszkij és Landisz, 1962): Az AVL-fa definíciója: t kiegyensúlyozott (AVL-tulajdonságú) <=> t minden x csúcsára: | h(bal(x)) – h(jobb(x)) | ≤ 1 - a majdnem teljes bináris fa AVL-tulajdonságú - minden művelet (beszúrás és törlés) után ellenőrizzük, és ha kell, helyreállítjuk az AVL-tulajdonságot - az AVL-fa maximális magassága 1,44log2n
Milyen ráfordítással tartható fenn az AVL-tulajdonság: 1) A (++,+) szabály: x y a b c ++ + h h+1 - egy újabb elemet behelyezünk a fába, amely nagyobb a gyökérnél (x) és a gyökér jobb gyerekénél is, elromlik az AVL-tulajdonság - az x bal részfájának a magassága h míg a jobb részfájának magassága h+2
=> Forgatás segítségével helyreállítható az AVL-tulajdonság x y a h b c h+1 ++ + => - az y kerül a gyökérbe, az y bal részfáját átállítjuk az x jobb részfájának - az x lesz az y bal oldali gyereke - az y jobb és baloldali részfájának magassága h+1 lesz - ennek a tükörképe a (--,-) szabály
2) A (++,-) szabály: x y a b c ++ - h z d h h h h-1 h-1 h - egy újabb elemet behelyezünk a fába, amely nagyobb a gyökérnél (x) és kisebb a gyökér jobb gyerekénél, elromlik az AVL-tulajdonság - az x bal részfájának a magassága h míg a jobb részfájának magassága h+2
=> Forgatás segítségével helyreállítható az AVL-tulajdonság x y a b c ++ - z d h h h h-1 h-1 h h h h h-1 h-1 h => - a gyökérbe a z elem kerül, bal gyereke az x, jobb gyereke az y lesz - a z bal részfája az x jobb részfája lesz - a z jobb részfája az y bal részfája lesz
Elromlott az AVL tulajdonság! Pl.: Építsünk AVL-fát a következő adatokból: 100 170 74 81 136 185 150 122 52 190 144 100 170 74 185 52 136 81 122 150 190 144 Elromlott az AVL tulajdonság!
Meghatározzuk hol romlott el az AVL-tulajdonság: 100 74 170 52 81 136 185 122 150 190 144 ++ - + Megcímkézzük a csúcsokat! A (++,-) szabályt alkalmazzuk!
A (++,-) szabállyal helyreállítjuk az AVL-tulajdonságot 100 74 170 52 81 136 185 122 150 190 144 - a 136-os elem kerül a gyökérbe! - a 136-os bal gyereke lesz a 100-as elem
A (++,-) szabállyal helyreállítjuk az AVL-tulajdonságot 136 170 52 81 185 122 150 190 144 100 74 - a 122-es elem a 100-as jobb gyereke lesz - a 150-es pedig a 170-es bal gyereke
A (++,-) szabállyal helyreállítottuk az AVL-tulajdonságot 136 100 170 52 81 74 185 150 190 144 122
Készítette: Bozó István