250 likes | 473 Views
Duomenų struktūros. lekt . dr. A . Slotkien ė. D vejetainis paieškos medis. 9. Nesubalansuotas pavyzdys. 4. 10. 1. 8. 3. 5. 6. Kaip kurti subalansuot ą medį?. AVL medis.
E N D
Duomenų struktūros lekt. dr. A. Slotkienė
Dvejetainis paieškos medis 9 Nesubalansuotas pavyzdys 4 10 1 8 3 5 6 Kaip kurti subalansuotą medį?
AVL medis • AVL (Adelson-Velski ir Landis) medis yra iš dalies subalansuotas dvejetainis paieškos medis, kurio bet kurios viršūnės kairiojo ir dešiniojo pomedžių aukščiai skiriasi ne daugiau nei vienetu. • Šis skirtumas vadinamas subalansuotumo faktoriumi: • 0 – pomedžiai subalansuoti • -1 – kairiojo pomedžio aukštis vienetu didesnis už dešiniojo • 1 – dešiniojo pomedžio aukštis vienetu didesnis už kairiojo
AVL medis Iš dalies subalansuotas dvejetainis paeiškos medis Viršūnių charakteristikos: 1) ilgiausios šakos ilgis (lygmuo); • lygmuo skaičiuojamas nuo 0 2)skirtuminė charakteristika • dešiniosios ir kairiosios šakų ilgių skirtumas yra vadinamas faktoriumi Faktorius turi būti -1, 0, +1. Jei faktorius ±2, medį reikia pertvarkyti. (2, 2) 3 5 6
AVL medis AVL-medis – tai dvejetainis paieškos medis, kurio šaknies dešinysis ir kairysis pomedžių aukščiai skiriasi ne daugiau kaip vienetu ir kurio pomedžiai, savo ruožtu, tai pat yra AVL-medžiai.
Charakteristikų skaičiavimo pavyzdys • 10 elementas: • lygmuo ->3 • faktorius -> 1 (3-2) nereikia pertvarkyti • 14 elementas: • lygmuo ->2 • faktorius -> 0 (2-2) nereikia pertvarkyti
Elementųįrašymo į AVL medįalgoritmas • Naują viršūnę prijungiame pagal pagrindinį dvejetainio paieškos medžio formavimo algoritmą; • Viršūnių charakteristikas skaičiuojame išrinktajame kelyje tol, kol faktorius intervale [1, -1] ; • Jeigu gaunamas neleistinas skirtumas ±2,tai paskutines tris viršūnes pertvarkome ir prijungiame jų pomedžius.
Subalansavomo AVL medyjebūdai • Viengubas postūmis į dešinę • Viengubas postūmis į kairę • Dvigubas postūmis į dešinę: • Vieną kartą į kairę • Kitą kartą į dešinę • Dvigubas postūmis į kairę: • Vieną kartą į dešinę • Kitą kartą į kairę
Žymėjimų susitarimai • p – viršunė kurios charakteristika ±2 • u – vidurinioji viršūnė (pirmoji p iš kairės arba dešinės, priklausomai kuo to, į kurią pusę didesnis viršūnių skaičius) • v – vidinė šaka • w – išorinė šaka Jei w ilgis >= v ilgiui pertvarkomp u w kitaippertvarkom p u v p u v w
7 (2, -2) p 6 9 u 2 12 w v 1 3 Trijų viršūnių pervarkymas: Viengubas postūmis į dešinę Jei w ilgis >= v ilgiui pertvarkomp u w kitaippertvarkom p u v 7 u 2 9 w p 1 6 12 v 3 w=v =>puw w<v =>puv
Viengubas postūmis į dešinę p u w w>v =>puw
Trijų viršūnių pervarkymas:Viengubas postūmis į kairę Jei w ilgis >= v ilgiui tai pertvarkom p u w kitaippertvarkomp u v
2 0 78 78 63 1 1 63 95 63 95 51 78 1 Postūmis į dešinę 51 73 51 73 73 95 31 31 Viengubas postūmis į dešinę Įterpiame 31 Skaičiuojame faktorius Balansuojame puw
2 78 78 1 95 63 95 63 95 78 105 -1 105 83 105 83 63 83 100 100 Viengubas postūmis į kairę Įterpiame 100 Skaičiuojame faktorius Balansuojame puw Postūmis į kairę
Trijų viršūnių pervarkymas: Dvigubas postūmis į dešinę Jei v ilgis > w ilgiui tai pertvarkom p u v kitaippertvarkom p u w • Dvigubas postūmis į dešinę: • Vieną kartą į kairę • Kitą kartą į dešinę 1. Postūmis į kairę
Dvigubas postūmis į dešinę 2. Postūmis į dešinę Jei w ilgis >= v ilgiui tai pertvarkom p u w kitaippertvarkom p u v
Dvigubas postūmis į dešinę Postūmis į kairę Postūmis į dešinę Subalansuotas puw puv
78 78 70 70 95 63 95 63 78 90 63 73 90 73 95 51 70 51 64 51 64 36 90 55 65 36 55 64 73 65 36 55 65 Dvigubas postūmis į dešinę 2 0 -1 0 -1 1 -1 1 -1 0 0 0
70 78 78 63 78 63 95 70 95 51 65 73 95 51 70 90 63 73 90 36 55 75 90 36 55 65 73 75 51 65 75 36 55 Dvigubas postūmis į dešinę 2 -1 1 -1 -1
Trijų viršūnių pervarkymas:Dvigubas postūmis į kairę • Dvigubas postūmis į kairę: • Vieną kartą į dešinę • Kitą kartą į kairę 6 3;2 5 8 p u 7 2 12 v 10 15 9 puv
Trijų viršūnių pervarkymas:Dvigubas postūmis į kairę Postūmis į dešinę Postūmis į kairę 6 6 p (3, 2) 5 8 5 10 u 7 2 8 12 2 10 9 7 9 15 12 w 15 puw
83 78 78 78 95 63 95 63 83 105 63 85 79 95 51 79 105 51 83 100 200 51 80 80 85 105 79 85 100 200 100 200 80 Dvigubas postūmis į kairę Subalansuotas Postūmis į dešinę Postūmis į kairę -2 1 1 -1 puv puw
7 (2, -2) p 6 9 u 2 12 w v 1 3 Skaičiaus 4 pašalinimas iš AVL: 7 4 9 2 6 12 1 3 1.Į 4vietą atkeliam (iš dešinės) 6 2.p viršūnės faktorius -2 – reikia pertvarkyti tris viršūnes - p u w ar p u v?
Pertvarkymo suvestinė p p u u v v w w
Praktika • http://www.engin.umd.umich.edu/CIS/course.des/cis350/treetool/ • http://www.site.uottawa.ca/~stan/csi2514/applets/avl/BT.html • http://www.cs.jhu.edu/~goodrich/dsa/trees/avltree.html