Page 51 - 6110
P. 51

6    else x:= right[y]
                                7  if x <> NULL
                                8    then p[x]:=p[y]
                                9  if p[y]:=NULL
                                10   then root[T]:=x
                                11   else if y=left[p[y]]
                                12     then left[p[y]] :=x
                                13     else right[p[y]]:=x
                                14 if y <> z
                                15   then val[z]:=val[y]
                                16  //копіювання додаткових даних з y
                                17 return y

                                В  програмуванні  збалансоване  дерево  в  загальному  розумінні
                            цього  слова  –  це  такий  різновид  бінарного  дерева  пошуку,  яке
                            автоматично підтримує свою висоту, тобто кількість рівнів вершин
                            під коренем, мінімальною. Ця властивість є важливою тому, що час
                            виконання  більшості  алгоритмів  на  бінарних  деревах  пошуку
                            пропорційний  до  їх  висоти,  і  звичайні  бінарні  дерева  пошуку
                            можуть  мати  досить  велику  висоту  в  тривіальних  ситуаціях.
                            Процедура зменшення (балансування) висоти дерева виконується за
                            допомогою  трансформацій,  відомих  як  обернення  дерева,  в  певні
                            моменти  часу  (переважно  при  видаленні  або  додаванні  нових
                            елементів).
                                Більш  строге  визначення  збалансованих  дерев  було  дане
                            Г.Адельсон-Вельським  та  Є.Ландісом.  Ідеально  збалансованим
                            деревом  за  Адельсон-Вельським  та  Ландісом  є  таке,  у  якого  для
                            кожної вершини різниця між висотами лівого та  правого піддерев
                            не  перевищує  одиниці.  Однак,  така  умова  доволі  складна  для
                            виконання на практиці і може вимагати значної перебудови дерева
                            при додаванні або видаленні елементів.
                                Тому  було  запропоноване  менш  строге  визначення,  яке
                            отримало  назву  умови  АВЛ(AVL)-збалансованості  і  говорить,  що
                            бінарне  дерево  є  збалансованим,  якщо  висоти  лівого  та  правого
                            піддерев  різняться  не  більше  ніж  на  одиницію.  Дерева,  що
                            задовольняють  таким     умовам,  називаються  AVL-деревами.
                            Зрозуміло,  що  кожне  ідеально  збалансоване  дерево  є  також  АВЛ-
                            збалансованим, але не навпаки.
                                Червоно-чорне  дерево  (red-black  tree)  в  інформатиці  –  це
                            різновид бінарного дерева пошуку, вершини якого мають додаткові
                            властивості  (RB-властивості),  зокрема  “колір”  (червоний  або
                            чорний). Червоно-чорні дерева – це різновид збалансованих дерев, в
                            яких  за  допомогою  спеціальних  трансформацій  гарантується,  що
                            висота дерева h не буде перевищувати Т(log n). Зважаючи на те, що
                                                            50
   46   47   48   49   50   51   52   53   54   55   56