logo

Повне бінарне дерево

Ми знаємо а дерево є нелінійною структурою даних. Він не має обмежень по кількості дітей. АЩо таке повне бінарне дерево?

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



Повне бінарне дерево

Деяка термінологія повного бінарного дерева:

  • Корінь – Вузол, в якому жодне ребро не походить від батьківського. Приклад - вузол А
  • дитина – Вузол, що має деяке вхідне ребро, називається дочірнім. Приклад – вузли B, F є дочірніми вузлами A і C відповідно.
  • рідний брат – Вузли, що мають одного батька, є однорідними. Приклад: D, E є рідними братами і сестрами, оскільки вони мають одного батька B.
  • Ступінь вузла – Кількість дітей у певного батька. Приклад. Степінь A дорівнює 2, а ступінь C дорівнює 1. Ступінь D дорівнює 0.
  • Внутрішні/зовнішні вузли – Листові вузли є зовнішніми вузлами, а нелистові вузли є внутрішніми вузлами.
  • Рівень – Підраховуйте вузли на шляху до вузла призначення. Приклад. Рівень вузла D дорівнює 2, оскільки вузли A і B утворюють шлях.
  • Висота – Кількість ребер для досягнення вузла призначення, корінь знаходиться на висоті 0. Приклад – висота вузла E дорівнює 2, оскільки він має два ребра від кореня.

Властивості повного бінарного дерева:

  • Повне бінарне дерево називається правильним бінарним деревом, де всі листи мають однакову глибину.
  • У повному двійковому дереві кількість вузлів на глибині d є 2 d .
  • У повному бінарному дереві с п Висота вузлів дерева становить log(n+1) .
  • Всі рівні крім останнього рівня повністю заповнені.

Ідеальне бінарне дерево проти повного бінарного дерева:

Бінарне дерево висотою «h» з максимальною кількістю вузлів є a ідеальний бінарне дерево.
Для заданої висоти ч , максимальна кількість вузлів становить 2 h+1 -1 .

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



Приклад 1:

Бінарне дерево

Висота даного бінарного дерева дорівнює 2, а максимальна кількість вузлів у цьому дереві дорівнює n= 2h+1-1 = 22+1-1 = 23-1 = 7 .
Отже, ми можемо зробити висновок, що так ідеальне бінарне дерево .
Тепер повне бінарне дерево заповнене до висоти h-1 тобто; 1, а елементи останнього рівня зберігаються в порядку зліва направо. Отже, це також повне бінарне дерево. Ось представлення елементів, які зберігаються в масиві



Елемент, що зберігається в масиві рівень за рівнем

У масиві всі елементи зберігаються безперервно.

приклад 2:

сортування оболонки

Бінарне дерево

Висота даного бінарного дерева дорівнює 2, а максимальна кількість вузлів, яка повинна бути там, дорівнює 2h+1– 1 = 22+1– 1 = 23– 1 = 7 .
Але кількість вузлів у дереві є 6 . Тому це так не ідеальне бінарне дерево .
Тепер повне бінарне дерево заповнене до висоти h-1 тобто; 1 і елемент останнього рівня зберігаються в порядку зліва направо. Отже, це a повне бінарне дерево . Збережіть елемент у масиві, і він буде таким;

Елемент, що зберігається в масиві рівень за рівнем

приклад 3:

vba

Бінарне дерево

Висота бінарного дерева дорівнює 2, а максимальна кількість вузлів, яка може бути там, становить 7, але є лише 5 вузлів, отже, це не ідеальне бінарне дерево .
У випадку повного бінарного дерева ми бачимо, що на останньому рівні елементи не заповнені зліва направо. Так воно і є не повне бінарне дерево .

Елемент, що зберігається в масиві рівень за рівнем

Елементи в масиві не є безперервними.

Повне бінарне дерево проти повного бінарного дерева:

Для повного бінарного дерева кожен вузол має або 2 дітей, або 0 дітей.

Приклад 1:

Бінарне дерево

У даному двійковому дереві немає вузла зі ступенем 1, або 2 або 0 дітей для кожного вузла, отже, це повне бінарне дерево .

Для повного бінарного дерева елементи зберігаються на рівні за рівнем, а не з крайньої лівої сторони останнього рівня. Тому це не повне бінарне дерево . Представлення масиву таке:

Елемент, що зберігається в масиві рівень за рівнем

приклад 2:

Бінарне дерево

У даному бінарному дереві немає вузла зі ступенем 1. Кожен вузол має ступінь 2 або 0. Отже, це повне бінарне дерево .

Для повного бінарного дерева елементи зберігаються порівневим способом і заповнюються з крайньої лівої сторони останнього рівня. Звідси це а повне бінарне дерево . Нижче представлено масив дерева:

Елемент, що зберігається в масиві рівень за рівнем

приклад 3:

Бінарне дерево

У даному бінарному дереві вузол B має ступінь 1, що порушує властивість повного бінарного дерева, отже, це не повне бінарне дерево

рядок n java

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

Елемент, що зберігається в масиві рівень за рівнем

Приклад 4:

бінарне дерево

У даному бінарному дереві вузол C має ступінь 1, що порушує властивість повного бінарного дерева, отже, це не повне бінарне дерево

рядок формату java

Для повного бінарного дерева елементи зберігаються порівневим способом і заповнюються з крайньої лівої сторони останнього рівня. Тут вузол E порушує умову. Тому це не повне бінарне дерево .

Створення повного бінарного дерева:

Ми знаємо а повне бінарне дерево це дерево, в якому за винятком останнього рівня (скажімо л )усі інші рівні мають ( ) вузли, а вузли вишикувані зліва направо.
Його можна представити за допомогою масиву. Якщо батьківський — це індекс i тому ліва дитина знаходиться на 2і+1 і права дитина знаходиться на 2і+2 .

Повне бінарне дерево та його масив

Алгоритм:

Для створення а Повне бінарне дерево , ми вимагаємо a Крок 1: Ініціалізуйте корінь новим вузлом, коли дерево порожнє.

Крок 2: Якщо дерево не порожнє, тоді візьміть передній елемент

  • Якщо передній елемент не має лівого дочірнього елемента, тоді встановіть лівий дочірній елемент на новий вузол
  • Якщо правий дочірній елемент відсутній, установіть правий дочірній елемент як новий вузол

крок 3: Якщо вузол має обидва дочірні елементи, тоді поп це з черги.

крок 4: Поставте нові дані в чергу.

Ілюстрація:

Розглянемо наведений нижче масив:

1. Перший елемент буде коренем (значення за індексом = 0 )

перетворення об'єкта в рядок

A береться як корінь

2. Наступний елемент (за індексом = 1 ) залишиться зліва, а третій елемент (індекс = 2 ) буде правильним дочірнім елементом root

B як ліва дитина, а D як права дитина

3. четвертий (індекс = 3 ) і п’ятий елемент (індекс = 4 ) буде лівим і правим дочірніми елементами вузла B

E і F є лівим і правим дочірніми елементами B

4. Наступний елемент (індекс = 5 ) залишиться нащадком вузла D

G стає лівим дочірнім елементом вузла D

Так створюється повне бінарне дерево.

Реалізація: Для реалізації побудови повного бінарного дерева з обходу порядку рівня наведено в цей пост .

Застосування повного бінарного дерева:

  • Сортування купи
  • Структура даних на основі сортування купи

Перевірте, чи дане двійкове дерево повне чи ні: Слідуйте цей пост щоб перевірити, чи дане двійкове дерево повне чи ні.