Визначення збалансованого дерева


100

Мені просто цікаво, чи хтось зможе пояснити для мене визначення збалансованого дерева. Я маю, що "дерево врівноважене, якщо кожне піддерево врівноважене і висота двох піддерев відрізняється щонайбільше на одне.

Прошу вибачення, якщо це глупе запитання, але чи застосовується це визначення до кожного вузла аж до листя дерева або лише до лівого та правого піддерев відразу від кореня? Я припускаю, що ще одним способом встановити це було б, чи можливо внутрішні вузли дерева бути незбалансованими, а все дерево залишатися збалансованим?


6
Просто хотів додати, що мова йде про Comp. Наукове визначення піддерева: Піддерево дерева T - це дерево, що складається з вузла в T та всіх його нащадків у T. Для звичайного математичного визначення (підграф дерева, яке саме є деревом) це не відповідає дійсності .
TT_

Відповіді:


123

Обмеження, як правило, застосовується рекурсивно до кожного піддерева. Тобто дерево збалансовано лише в тому випадку, якщо:

  1. Висота лівого та правого піддерев відрізняється щонайбільше на одну, І
  2. Ліве піддерево збалансоване, І
  3. Праве піддерево збалансоване

Відповідно до цього врівноважується наступне дерево:

     A
   /   \
  B     C  
 /     / \  
D     E   F  
     /  
    G  

Наступний не врівноважений, оскільки підряди C відрізняються на 2 за своєю висотою:

     A
   /   \
  B     C   <-- difference = 2
 /     /
D     E  
     /  
    G  

Однак, специфічне обмеження першого пункту залежить від типу дерева. Перерахований вище є типовим для дерев AVL .

Наприклад, червоно-чорні дерева накладають більш м'яке обмеження.


50

Існує кілька способів визначити "Збалансований". Основна мета - зберегти глибину всіх вузлів O(log(n)).

Мені здається, що стан балансу, про який ви говорили, - це дерево AVL .
Ось офіційне визначення стану балансу дерева AVL :

Для будь-якого вузла в AVL висота його лівого піддерева відрізняється щонайбільше на 1 від висоти його правого піддерева.

Наступне питання, що таке " висота "?

" Висота " вузла в двійковому дереві - це довжина найдовшого шляху від цього вузла до аркуша.

Є один дивний, але поширений випадок:

Люди визначають висоту порожнього дерева (-1).

Наприклад, ліва дочірня дошка root null:

              A  (Height = 2)
           /     \
(height =-1)       B (Height = 1) <-- Unbalanced because 1-(-1)=2 >1
                    \
                     C (Height = 0)

Ще два приклади для визначення:

Так, приклад збалансованого дерева :

        A (h=3)
     /     \
 B(h=1)     C (h=2)        
/          /   \
D (h=0)  E(h=0)  F (h=1)
               /
              G (h=0)

Ні, не приклад збалансованого дерева :

        A (h=3)
     /     \
 B(h=0)     C (h=2)        <-- Unbalanced: 2-0 =2 > 1
           /   \
        E(h=1)  F (h=0)
        /     \
      H (h=0)   G (h=0)      

1
Зверніть увагу, що це визначення допускає незбалансовані піддерева збалансованих дерев. (наприклад, розширити приклад збалансованого дерева вище, додавши дочірній знак до D, а інший - до G) Чи це призначено?
генерал

2
Ні, це не так. " Для будь-якого вузла в AVL висота його лівого піддерева відрізняється щонайбільше на 1 від висоти його правого піддерева." Якщо ви додасте дитину до D, тоді B не буде дотримуватися вищезазначеного правила. Отже, дерево не може бути BBT.
Джон Ред

1
ваша відповідь дуже багатослівна і не точна
Марвен

9

Між цими двома речами немає різниці. Подумай над цим.

Візьмемо більш просте визначення: "Позитивне число - це навіть якщо воно дорівнює нулю або це число мінус два - парне". Це означає, що 8 навіть якщо 6 рівне? Або це говорить, що 8 - це навіть, якщо 6, 4, 2 і 0 - парні?

Різниці немає. Якщо там написано 8 - це навіть, якщо 6 - парне, воно також говорить, що 6 - це навіть, якщо 4 - парне. І отже, там також сказано, що 4 є парним, якщо 2 парним. І отже, там сказано, що 2 - це навіть, якщо 0 - парне. Отже, якщо в ньому сказано, що 8 - це навіть, якщо 6 - парне, це (побічно) говорить, що 8 - це навіть, якщо 6, 4, 2 і 0 - парні.

Тут те саме. Будь-яке непряме піддерево можна знайти за ланцюжком прямих піддерев. Отже, навіть якщо це стосується лише безпосередньо піддерев, воно все одно поширюється опосередковано до всіх піддерев (і, отже, до всіх вузлів).


1
Скажімо, значення кореня дорівнює 15. Внизу праворуч я маю 16,17,18. Внизу ліворуч у мене 14,13,12. Це збалансоване дерево? Висота кожного піддерева від вузла знаходиться в межах одиниці. Але візьміть перший вузол нижче кореня праворуч, у нього немає лівих дочірніх елементів, але висота його правих дочірніх дорівнює 2. Таким чином, цей вузол не збалансований. Це правильно?
Mark Soric

1
Правильно. Таким чином дерево не збалансовано.
Девід Шварц,

1
Отже, щоб дерево було збалансованим - кожен вузол повинен бути збалансованим. Краса - велике спасибі за допомогу.
Mark Soric

1
@DavidSchwartz, чому ми намагаємось використовувати збалансоване дерево? чому ми дбаємо про те, врівноважене дерево чи ні?
Dejell

3
Це, безумовно, найскладніша відповідь, яку я бачив на SO - на будь-яке питання. Вибачте, що це кажу.
Тревор

4

Збалансоване дерево - це дерево, висота якого порядку журналу (кількість елементів у дереві).

height = O(log(n))
O, as in asymptotic notation i.e. height should have same or lower asymptotic
growth rate than log(n)
n: number of elements in the tree

Визначення "дерево збалансовано для кожного піддерева збалансовано, а висота двох піддерев відрізняється щонайбільше на одне" супроводжується деревами AVL.

Оскільки дерева AVL є збалансованими, але не всі збалансовані дерева є деревами AVL, збалансовані дерева не дотримуються цього визначення, і внутрішні вузли можуть бути незбалансованими в них. Однак дерева AVL вимагають збалансованості всіх внутрішніх вузлів.


3

мета збалансованого дерева полягає в тому, щоб досягти листя за мінімальний обхід (мінімальна висота). Ступінь дерева - це кількість гілок мінус 1. Збалансоване дерево може бути не двійковим.


0
  1. Висота вузла в дереві - це довжина найдовшого шляху від цього вузла вниз до листа, враховуючи як початкову, так і кінцеву вершини шляху.
  2. Вузол у дереві збалансований по висоті, якщо висота його піддерев відрізняється не більше ніж на 1.
  3. Дерево збалансовано по висоті, якщо всі його вузли збалансовані по висоті.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.