Різниця між "Повне бінарне дерево", "строге бінарне дерево", "повне бінарне дерево"?


80

Мене бентежить термінологія наведених нижче дерев, я вивчав Дерево і не можу розрізнити ці дерева:

а) Повне двійкове дерево

б) Строге двійкове дерево

в) Повне двійкове дерево

Будь ласка, допоможіть мені розрізнити ці дерева. Коли і де ці дерева використовуються в структурі даних?


2
Чи en.wikipedia.org/wiki/Binary_tree#Types_of_binary_trees не відповідає на ваше запитання?
Родіон

7
ні, ні, багато плутанини серед них
kTiwari

1
Строге двійкове дерево: Кожен вузол може мати 2 дочірніх або взагалі відсутніх вузлів
vikkyhacks

Відповіді:


73

Вікіпедія поступилася

Повне двійкове дерево (іноді власне двійкове дерево або 2-дерево або суто двійкове дерево) - це дерево, в якому кожен вузол, крім листя, має двох дітей.

Отже, у вас немає вузлів, де є лише 1 дитина. Виглядає так само, як строге двійкове дерево.

Ось зображення повного / суворого бінарного дерева від google:

введіть тут опис зображення

Повне бінарне дерево - це бінарне дерево, в якому кожен рівень, крім можливо останнього, повністю заповнений, а всі вузли - якнайдаліше.

Здається, це означає збалансоване дерево.

Ось зображення повного бінарного дерева, від google, повна деревна частина зображення - бонус.

введіть тут опис зображення


34
Ваш повний приклад дерева також відповідає критеріям повноцінного двійкового дерева, тому різниця, очевидно, розмита, на мою думку, ви можете навести приклад повного дерева, яке не є повним двійковим деревом, і навпаки, що зробило б відповідь завершена :)
0десятковий0

1
Існує різниця між повним бінарним деревом і строго бінарним деревом. Зверніться до відповіді: stackoverflow.com/a/32064101/5237727
Саураб Бхатія

2
Крім того, хоча всі цілі дерева є збалансованими деревами, всі збалансовані дерева не обов'язково є цілими деревами.
sfarbota

1
Що означає, що кожен рівень повністю заповнений?
лолололол ол

2
@lololololol це означає, що присутні всі вузли, які можуть бути на цьому рівні.
Сем, я є, відновлюю Моніку

87

Ідеальне дерево:

       x
     /   \
    /     \
   x       x
  / \     / \
 x   x   x   x
/ \ / \ / \ / \
x x x x x x x x

Повне дерево:

       x
     /   \
    /     \
   x       x
  / \     / \
 x   x   x   x
/ \ /
x x x

Строге / повне дерево:

       x
     /   \
    /     \
   x       x
  / \ 
 x   x 
    / \
    x x 

4
Під ідеальним двійковим деревом ви маєте на увазі повне двійкове дерево, згадане OP?
RBT

3
Ідеальне бінарне дерево є як строгим, так і повним бінарним деревом, а також повним бінарним деревом, але навпаки не завжди може бути правдою.
нео

51

Існує різниця між СТРОГИМ І ПОВНИМ БІНАРНИМ ДЕРЕВОМ.

1) ПОВНЕ БІНАРНЕ ДЕРЕВО: Двійкове дерево висотою h, яке містить рівно (2 ^ h) -1 елементів, називається повним двійковим деревом . (Посилання: Стор. 427, Структури даних, алгоритми та програми на C ++ [University Press], друге видання Сартая Сані).

або іншими словами

У ПОВНОМУ ДВОЙНОМУ ДЕРЕВІ кожен вузол має рівно 0 або 2 дочірніх дерева, і всі листові вузли знаходяться на одному рівні.

Наприклад: Нижче наведено ПОВНЕ БІНАРНЕ ДЕРЕВО:

          18
       /      \   
     15       30    
    /  \     /   \   
  40    50  100  40 

2) СТРОГЕ БІНАРНЕ ДЕРЕВО: Кожен вузол має рівно 0 або 2 дітей.

Наприклад: Нижче наведено СТРОГЕ ДВОЙНЕ ДЕРЕВО:

         18
       /     \   
     15       30    
    /  \          
  40    50

Думаю, немає ніякої плутанини у визначенні Повного бінарного дерева, все ж щодо повноти поста я хотів би розповісти, що таке Повне двійкове дерево.

3) ПОВНЕ БІНАРНЕ ДЕРЕВО: Двійкове дерево є повним Двійковим деревом, якщо всі рівні заповнені повністю, за винятком можливо останнього рівня, а останній рівень має всі ключі як можна лівіше.

Наприклад: Нижче наведено ПОЛНЕ ДВОЙНЕ ДЕРЕВО:

           18
       /       \  
     15         30  
    /  \        /  \
  40    50    100   40
 /  \   /
8   7  9 

Примітка: Далі також подано повне двійкове дерево:

         18
       /     \   
     15       30    
    /  \     /   \   
  40    50  100  40 

Чи можете ви дати джерело для повного визначення бінарного дерева? Це суперечить тому у Вікіпедії, який постачається до NIST .
Calvin Li

@CalvinLi Джерело згадується у визначенні ПОВНОГО БІНАРНОГО ДЕРЕВА. Ось посилання на pdf (стор. 447 pdf) - o6ucs.files.wordpress.com/2012/10/…
Саураб Бхатія,

@SaurabhBhatia, останнє подання також справедливо для повного бінарного дерева. Виправте мене, якщо я помиляюся. Як може бути справедливим одне подання для різних сортів?
Роуз

10

Застереження - Основним джерелом деяких визначень є wikipedia, будь-яка пропозиція щодо покращення моєї відповіді вітається.

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

(1) ПОВНЕ БІНАРНЕ ДЕРЕВО - Повне бінарне дерево - це бінарне дерево, в якому кожен вузол, крім листя, має двох дітей. Це також називається суто бінарним деревом .

введіть тут опис зображення введіть тут опис зображення

Два наведені вище приклади повного або строго двійкового дерева.

(2) ПОВНЕ БІНАРНЕ ДЕРЕВО - Тепер визначення повного бінарного дерева є досить неоднозначним, воно говорить: - Повне бінарне дерево - це бінарне дерево, в якому кожен рівень, крім можливо останнього , повністю заповнений, і всі вузли якнайкраще ліворуч. Він може мати від 1 до 2 годин вузлів, наскільки це можливо ліворуч, на останньому рівні h

Зверніть увагу на рядки курсивом.

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

НАЙБІЛЬ ПОВНЕ БІНАРНЕ ДЕРЕВО - Коли у визначенні повного бінарного дерева існує виняток, тоді воно називається майже повним бінарним деревом або майже повним бінарним деревом. Це всього лише тип повного двійкового дерева, але для того, щоб зробити його більш однозначним, необхідне окреме визначення.

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

введіть тут опис зображення


6

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

  1. Повне / строго двійкове дерево : - Кожен вузол, крім листових, має двох дітей

  2. Повне двійкове дерево : - Кожен рівень, крім останнього рівня, повністю заповнений, і всі вузли залишаються вирівняними.

  3. Ідеальне двійкове дерево : - Кожен вузол, крім листових, має двох дітей, і кожен рівень (останній рівень теж) повністю заповнений.


2

Розглянемо двійкове дерево, вузли якого намальовані по-дереву. Тепер починайте нумерацію вузлів зверху вниз і зліва направо. Повне дерево має такі властивості:

Якщо n має дітей, то всі вузли, що мають номер менше, ніж n, мають двох дітей.

Якщо n має одну дитину, це має бути ліва дитина, а всі вузли менше n мають двох дітей. Крім того, жоден вузол з номером, більшим за n, не має дітей.

Якщо n не має нащадків, то жоден вузол з номером, більшим за n, не має дочірніх.

Повне двійкове дерево може бути використано для представлення купи. Його можна легко представити у суміжній пам’яті без пропусків (тобто використовуються всі елементи масиву, за винятком будь-якого місця, яке може існувати в кінці).


2

Повне двійкове дерево є повним двійковим деревом, але зворотне неможливе, і якщо глибина двійкового n дорівнює n, немає. вузлів у повному двійковому дереві дорівнює (2 ^ n-1). Не потрібно в двійковому дереві мати двох дочірніх елементів, але в повному двійковому коді кожен вузол не має або двох дочірніх.


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

1
якщо глибина двійкового файла n n немає. вузлів у повному двійковому дереві дорівнює (2 ^ n-1): але повне визначення двійкового дерева - це дерево, де кожен вузол є або листом, або має двох дітей. Тож максимально можливого немає. дітей становить (2 ^ n-1), але це може бути менше цього.
мріда

2

Для початку з основ дуже важливо зрозуміти саме бінарне дерево, щоб зрозуміти різні його типи.

Дерево є двійковим деревом тоді і тільки тоді, коли: -

- Він має кореневий вузол, який не може мати дочірніх вузлів (0 дочірніх вузлів, дерево NULL)

–Кореневий вузол може мати 1 або 2 дочірніх вузли. Кожен такий вузол сам утворює абінарне дерево 

–Кількість дочірніх вузлів може бути 0, 1, 2 ....... не більше 2

–Унікальний шлях від кореня до кожного іншого вузла

Приклад:

        X
      /    \
     X      X
          /   \
         X     X

Звертаючись до ваших запитаних термінологій:

Бінарне дерево - це повне бінарне дерево (висотою h, ми беремо кореневий вузол як 0) тоді і тільки тоді, коли: -

Рівні від 0 до h-1 представляють повне двійкове дерево висотою h-1

- Один або кілька вузлів рівня h-1 можуть мати 0 або 1 дочірній вузол

Якщо j, k - вузли на рівні h-1, тоді j має більше дочірніх вузлів, ніж k, тоді і тільки тоді, коли j знаходиться ліворуч від k, тобто на останньому рівні (h) можуть бути відсутні вузли-листки, проте присутні повинні бути зміщений вліво

Приклад:

                          X
                     /          \
                   /              \
                 /                  \
                X                    X
             /     \              /     \
           X       X             X       X
         /   \   /   \         /   \    /  \ 
        X    X   X   X        X    X    X   X 

Двійкове дерево є суто двійковим деревом тоді і тільки тоді, коли: -

Кожен вузол має рівно два дочірніх вузли або їх немає

Приклад:

         X
       /   \
      X     X 
          /   \
         X      X
        / \    / \ 
       X   X  X   X 

Двійкове дерево є повним двійковим деревом тоді і тільки тоді, коли: -

Кожен нелистовий вузол має рівно два дочірніх вузли

Всі листові вузли знаходяться на одному рівні

Приклад:

                          X
                     /          \
                   /              \
                 /                  \
                X                    X
             /     \              /     \
           X       X             X       X
         /   \   /   \         /   \    /  \ 
        X    X   X   X        X    X    X   X 
      /  \  / \ / \ / \      / \  / \  / \ / \ 
     X   X X  X X X X X     X  X  X X  X X X X 

Ви також повинні знати, що таке ідеальне бінарне дерево?

Бінарне дерево є ідеальним бінарним деревом тоді і тільки тоді, коли: -

- це повне двійкове дерево

- Усі листові вузли знаходяться на одному рівні

Приклад:

                          X
                     /          \
                   /              \
                 /                  \
                X                    X
             /     \              /     \
           X       X             X       X
         /   \   /   \         /   \    /  \ 
        X    X   X   X        X    X    X   X 
      /  \  / \ / \ / \      / \  / \  / \ / \ 
     X   X X  X X X X X     X  X  X X  X X X X 

Ну, мені шкода, що я не можу розміщувати зображення, оскільки не маю 10 репутації. Сподіваюся, це допомагає вам та іншим!


2

У своєму обмеженому досвіді роботи з бінарним деревом я думаю:

  1. Строго двійкове дерево : Кожен вузол, крім листових, має двох дітей або лише кореневий вузол.
  2. Повне двійкове дерево : Двійкове дерево з H, строго (або точно), що містить 2 ^ (H + 1) -1 вузли , зрозуміло, що кожен рівень має найбільше вузлів. Або коротше суворе двійкове дерево, де всі листові вузли знаходяться на одному рівні.
  3. Повне двійкове дерево : це двійкове дерево, в якому кожен рівень, крім можливо останнього, повністю заповнений, а всі вузли - якнайдаліше.

1
Ви визначили повне бінарне дерево неправильно, тобто визначення ідеального бінарного дерева. Повне двійкове дерево є синонімом строго двійкового дерева. (Джерело: см строго бінарне дерево: faculty.cs.niu.edu/~mcmahon/CS241/Notes/bintree.html ) (джерело: см ідеального бінарного дерева: slideshare.net/ajaykumarc137151 / ... )
Keego

1
о, боже, я щойно розгубився, переконаюсь у цьому. Дуже дякую.
BertKing

1
Немає проблем :) Дивіться відповідь @Lotus нижче , він прибив її. Я просто порекомендував зміни для вашої відповіді, щоб відобразити це.
Keego

1

Давайте розглянемо двійкове дерево висотою 'h'. Двійкове дерево називається повним двійковим деревом, якщо всі листки присутні на висоті 'h' або 'h-1' без відсутніх цифр у послідовності.

                   1
                 /   \
              2       3
            /    \         
         4        5

Це повне двійкове дерево.

                   1
                 /   \
              2       3
            /        /    
         4         6    

Це не повне двійкове дерево, оскільки вузол числа 5 відсутній у послідовності


0

повне двійкове дерево заповнене, якщо кожен вузол має 0 або 2 дітей. у повній двійковій кількості листових вузлів - це кількість внутрішніх вузлів плюс 1 L = l + 1


0

Повне бінарне дерево: Усі рівні заповнені повністю, за винятком найнижчого рівня, і одне головне, що всі елементи листя повинні залишитися дочірніми. Строге двійкове дерево: У цьому дереві кожен нелистовий вузол не має нащадка, тобто ні ліворуч, ні праворуч. Повне двійкове дерево: Кожен вузол має або нуль дитини, або двох дітей (ніколи не має єдиної дитини).


> У цьому дереві кожен нелистовий вузол не має нащадка, тобто ні лівий, ні правий
Нелистовий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.