BPC-ALD - Skripta_rev2019_2
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
c) Vyhledávání skončilo v uzlu u s prvkem c, přičemž x>c a přitom uzel u už nemá
pravého následníka. V tom případě přidáme ke stromu pravého následníka uzlu u, do
kterého nový prvek x vložíme.
Do AVL stromu
lze snadno přidat
nový prvek.
− 66 −
Příklad. Do následujícího AVL stromu
máme vložit prvek 1. Následující obrázek ukazuje postup.
Prvek 1 bude přidán jako nový levý následník uzlu s prvkem 4.
2. Obnovení vyvážení uzlu
Po přidání může dojít k porušení vyvážení AVL stromu. V těchto případech je nutné vhodnou
transformací strom znovu vyvážit. Jako první je nutné najít uzel, u něhož došlo porušení
podmínky, že výška jeho podstromů se může lišit nejvýše o 1. Proces hledání začneme u uzlu,
do kterého jsme přidali následníka, a pokračujeme směrem nahoru až buďto najdeme
nevyvážený uzel anebo skončíme v kořenu a tím zjistíme, že strom i po přidání zůstal vyvážený.
U nevyváženého uzlu mohou nastat dva základní případy. První z nich ukazuje následující
obrázek. Nevyvážený uzel je v něm označen B.
Transformace uvedená na předchozím obrázku se používá rovněž i pro zrcadlový případ
(otočený kolem svislé osy).
Příklad. Do následujícího AVL stromu
Vyvážení AVL
stromu obnovíme
lokálními
transformace
tvaru stromu.
− 67 −
přidáme prvek 20.
Po přidání začneme směrem nahoru procházet uzly počínaje uzlem 18, do kterého byl přidán
následník s novým prvkem. Uzel 18 je vyvážený, uzel 15 je vyvážený, uzel 9 ale není vyvážený,
neboť jeho levý podstrom má výšku 1, zatímco pravý podstrom má výšku 3. Viditelně jde o
zrcadlový případ již popsaného typu nevyvážení a k jeho odstranění použijeme transformaci u
tohoto nevyvážení uvedenou.