Поворот дерева
— це операція над бінарним деревом, яка змінює його структуру без втручання в порядок елементів. Замість цього, поворот дерева переміщує одну вершину вверх у дереві і одну вниз.
Типи поворотів дерева
Правий поворот переміщує дочірню вершину вправо вверх уздовж свого батька, а батька переміщує вниз уздовж неї.
Лівий поворот робить протилежне, переміщуючи дочірню вершину вліво вверх уздовж свого батька, а батька переміщує вниз уздовж неї.
Використання поворотів дерева
Повороти дерева в основному використовуються для:
- Зменшення висоти дерева: Пересування менших піддерев вниз, а більших вверх зменшує висоту дерева, покращуючи ефективність багатьох операцій на дереві, таких як пошук, вставка і видалення.
- Врівноваження дерева: Повороти дерева можуть використовуватися для підтримки бінарного дерева в збалансованому стані, покращуючи ефективність операцій.
- Реструктуризація дерева: Повороти дерева можуть бути використані для зміни форми дерева, наприклад для перетворення незбалансованого дерева в збалансоване.
Алгоритм повороту дерева
Обидва, лівий і правий, повороти дерева виконуються за схожим алгоритмом:
- Знайдіть вершину для повороту: Визначте вершину, яка має бути переміщена вверх або вниз.
- Оберіть тип повороту: Визначте, який тип повороту виконувати (лівий або правий).
- Призначте покажчики: Перепризначте покажчики, щоб встановити нові положення вершин.
- Оновіть висоти: Оновіть значення висот вершин, щоб відобразити зміни в структурі дерева.
Складність повороту дерева
Часова складність повороту дерева становить O(1), оскільки він передбачає зміну лише обмеженої кількості покажчиків і оновлення висот вершин.
Приклад повороту дерева
Нижче наведено приклад правого повороту в бінарному дереві:
10 12
/ \ / \
6 12 10 14
/ \ \ / \ /
4 8 14 6 8 12
/ /
2 10
Псевдокод повороту дерева
поворот_право(вершина):
доч_вершина = вершина->ліва
вершина->ліва = доч_вершина->права
доч_вершина->права = вершина
коригування_висот(вершина)
коригування_висот(доч_вершина)
поворот_ліво(вершина):
доч_вершина = вершина->права
вершина->права = доч_вершина->ліва
доч_вершина->ліва = вершина
коригування_висот(вершина)
коригування_висот(доч_вершина)
Поворот дерева — це операція, яка використовується для зміни структури бінарного дерева без порушення порядку його елементів. Повороти дерева корисні для зменшення висоти дерева, забезпечення збалансованості та реструктуризації дерева. Завдяки своїй ефективній реалізації поворот дерева відіграє важливу роль у підтримці ефективності багатьох операцій на бінарних деревах.
Часто задавані питання
Що таке поворот дерева?
Поворот дерева — це операція над бінарним деревом, яка змінює його структуру, переміщуючи одну вершину вверх і одну вниз, не порушуючи порядку елементів.Які бувають типи поворотів дерева?
Існує два типи поворотів дерева: правий і лівий.Для чого використовуються повороти дерева?
Повороти дерева використовуються для зменшення висоти дерева, забезпечення збалансованості та реструктуризації дерева.Яка часова складність повороту дерева?
Часова складність повороту дерева становить O(1).Як реалізувати поворот дерева?
Повороти дерева можна реалізувати за допомогою псевдокоду, наведеного в статті.
У вас є запитання чи ви хочете поділитися своєю думкою? Тоді запрошуємо написати їх в коментарях!
⚡⚡⚡ Топ-новини дня ⚡⚡⚡
Хто такий Такер Карлсон? Новий законопроект про мобілізацію З травня пенсію підвищать на 1000 гривень