Preskočiť na obsah

AVL strom

z Wikipédie, slobodnej encyklopédie
Príklad stromu, ktorý nie je AVL

AVL strom (pomenovaný podľa vynálezcov Adelson-Velsky and Landis) v informatike je údajová štruktúra, prvý vynájdený samovyvažovací binárny vyhľadávací strom. V AVL strome sa pre každý uzol rozdiel výšky dvoch podstromov detských uzlov líšia najviac o jednotku, preto je známy aj ako výškovo vyvážený. Hľadanie, vkladanie, a mazanie majú zložitosť O(log n) v priemernom aj najhoršom prípade. Pridávanie a mazanie môže vyžadovať vyváženie stromu jednou alebo viacerými rotáciami stromu.

AVL strom je pomenovaný po jeho dvoch vynálezcoch, G. M. Adelson-Velskym a E. M. Landisovi, ktorí ho publikovali v ich dokumente z roku 1962 Algoritmus pre organizáciu informácií.

Koeficient vyváženia uzla je výška jeho pravého podstromu mínus výška jeho ľavého podstromu. Uzol s koeficientom vyváženia 1, 0 alebo -1 sa považuje za vyvážený. Uzol s koeficientom vyváženia -2 alebo 2 sa považuje za nevyvážený a vyžaduje vyváženie stromu. Koeficient vyváženia sa buď ukladá priamo v každom uzle alebo sa počíta z výšiek podstromov, ktoré sú prípadne uložené v uzloch.

Rovnaký strom po výškovom vyvážení

Základné operácie nad AVL stromom zvyčajne vykonávajú rovnaké operácie ako by sa vykonali nad nevyváženým binárnym vyhľadávacím stromom, ale predchádza alebo nasleduje jedna z takzvaných "AVL rotácií".

Vkladanie do AVL stromu je možné vykonať nasledovne: vložiť hodnotu do stromu ako keby bol nevyvážený binárny vyhľadávací strom, potom sa vrátiť ku koreňu a rotovať uzly, ktoré sa počas vkladania stali nevyváženými (pozri rotácia stromu). Keďže sa počas cesty späť ku koreňu prechádza najviac cez 1,44 x log n uzlov a každá AVL rotácia trvá konštantnú dobu, celý proces vkladania trvá O(log n).

Mazanie z AVL stromu je možné vykonať rotáciou uzla, ktorý má byť vymazaný dolu do listu a následne jeho priamym odseknutím. Keďže bude rotovaných najviac log n uzlov a každá AVL rotácia trvá konštantnú dobu, celý proces mazania trvá O(log n).

Vyhľadanie

[upraviť | upraviť zdroj]

Vyhľadanie v AVL strome sa vykonáva rovnako ako v nevyváženom binárnom vyhľadávacom strome a tak trvá O(log n), keďže AVL strom je vždy vyvážený. Netreba klásť žiadne zvláštne predpoklady a vyhľadávanie nemení štruktúru stromu (na rozdiel vyhľadávania v splay strome, ktoré mení jeho štruktúru).

Referencie

[upraviť | upraviť zdroj]
  • G. Adelson-Velskii a E.M. Landis, "An algorithm for the organization of information." Doklady Akademii Nauk SSSR, 146:263–266, 1962 (po rusky). Anglický preklad Myron J. Ricci v Soviet Math. Doklady, 3:1259–1263, 1962.
  • Donald Knuth. The Art of Computer Programming, Volume 3: Sorting and Searching, tretie vydanie. Addison-Wesley, 1997. ISBN 0-201-89685-0. Str. 458–475 kapitoly 6.2.3: Balanced Trees. Knuth nazýva AVL stromy jednoducho "vyvážené stromy".

Externé odkazy

[upraviť | upraviť zdroj]

Po anglicky:

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy