120 likes | 274 Views
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ú.
E N D
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
x ++ y + h a h h+1 b c Milyen ráfordítással tartható fenn az AVL-tulajdonság: 1) A (++,+) szabály: - 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
y x ++ => h+1 x y + c h a h h h h+1 a b b c Forgatás segítségével helyreállítható az AVL-tulajdonság - 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
x ++ y - h a h z d b c h h h h-1 h-1 h 2) A (++,-) szabály: - 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
z x ++ => x y y - a h h h h-1 h-1 h h a h h d h z d b c b c h h h h-1 h-1 h Forgatás segítségével helyreállítható az AVL-tulajdonság - 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
100 170 74 52 81 136 185 122 150 190 144 Pl.: Építsünk AVL-fát a következő adatokból: 100 170 74 81 136 185 150 122 52 190 144 Elromlott az AVL tulajdonság!
++ 100 - 170 74 + 52 81 136 185 - 122 150 190 144 Meghatározzuk hol romlott el az AVL-tulajdonság: Megcímkézzük a csúcsokat! A (++,-) szabályt alkalmazzuk!
100 170 74 52 81 136 185 122 150 190 144 A (++,-) szabállyal helyreállítjuk az AVL-tulajdonságot - a 136-os elem kerül a gyökérbe! - a 136-os bal gyereke lesz a 100-as elem
136 170 100 52 81 185 122 74 150 190 144 A (++,-) szabállyal helyreállítjuk az AVL-tulajdonságot - a 122-es elem a 100-as jobb gyereke lesz - a 150-es pedig a 170-es bal gyereke
136 170 100 52 81 122 74 185 150 190 144 A (++,-) szabállyal helyreállítottuk az AVL-tulajdonságot
Készítette: Bozó István