Поворот дерева — операція над бінарним деревом, яка змінює його структуру без втручання в порядок елементів. Поворот дерева пересуває одну вершину вверх дерева і одну вниз. Використовується для зміни обрису дерева, особливо для зменшення висоти, пересуваючи менші піддерева вниз, а більші догори, в результаті покращення виконання багатьох операцій на дереві.
Домовленість, у який бік зсуваються вершини і є напрямком повороту.
Малюнок
Припустимо, що це бінарне дерево пошуку, тож інтерпретуємо елементи як змінні величини, а не як букви.
Деталізований малюнок
Коли піддерево повертається, тоді піддерево із сторони якого робиться поворот зменшує свою висоту на одиницю, а друге збільшує на одиницю. Це робить операцію корисною для збалансування дерев.
Використовувана термінологія — Root для кореневої вершини для повороту, Pivot для вершини, яка займе місце кореневої, RS для назви сторони з якої здійснюється поворот і OS для сторони протилежної повороту. Тоді можна записати такий псевдо-код повороту.
Pivot = Root.OS Root.OS = Pivot.RS Pivot.RS = Root Root = Pivot
Час такої операції не залежить від висоти дерева.
Програміст має також пересвідчитись, що вказівник на батьківську вершину для екскореневої вказує на вершину, що зайняла її місце. Також програміст має занотувати, що загальний корінь дерева може змінитися, тож треба бути обережним із вказівниками.
Поворот для балансування
Дерево може бути збалансоване використовуючи повороти. Після повороту, одна із сторін збільшує висоту на одиницю, у той час як інша зменшує. Отже, важливо використовувати повороти для вершин у яких висота лівого і правого піддерева різниться більше ніж на одиницю. Самозбалансовані дерева пошуку роблять це автоматично. АВЛ-дерево використовує таке збалансування.
Відстань обертання
Відстань обертання між будь-якими двома бінарними деревами з однаковою кількістю вершин — мінімальна кількість необхідних поворотів для перетворювання одного дерева в друге. З цією відстанню, набір n-вершинних дерев стає метричним простором: відстань обертання — симетрична, додаткова коли два дерева різні, і влаштовує нерівності трикутника.
Прорахунок відстані обертання— одна з відкритих проблем математики.
Посилання
- (англ.)
- Java applets demonstrating tree rotations(англ.)
- The AVL Tree Rotations Tutorial (RTF) by John Hargrove(англ.)
Див. також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Povorot dereva operaciya nad binarnim derevom yaka zminyuye jogo strukturu bez vtruchannya v poryadok elementiv Povorot dereva peresuvaye odnu vershinu vverh dereva i odnu vniz Vikoristovuyetsya dlya zmini obrisu dereva osoblivo dlya zmenshennya visoti peresuvayuchi menshi piddereva vniz a bilshi dogori v rezultati pokrashennya vikonannya bagatoh operacij na derevi Domovlenist u yakij bik zsuvayutsya vershini i ye napryamkom povorotu MalyunokPripustimo sho ce binarne derevo poshuku tozh interpretuyemo elementi yak zminni velichini a ne yak bukvi Detalizovanij malyunokGrafichne poyasnennya yak roblyatsya povoroti Koli pidderevo povertayetsya todi pidderevo iz storoni yakogo robitsya povorot zmenshuye svoyu visotu na odinicyu a druge zbilshuye na odinicyu Ce robit operaciyu korisnoyu dlya zbalansuvannya derev Vikoristovuvana terminologiya Root dlya korenevoyi vershini dlya povorotu Pivot dlya vershini yaka zajme misce korenevoyi RS dlya nazvi storoni z yakoyi zdijsnyuyetsya povorot i OS dlya storoni protilezhnoyi povorotu Todi mozhna zapisati takij psevdo kod povorotu Pivot Root OS Root OS Pivot RS Pivot RS Root Root Pivot Chas takoyi operaciyi ne zalezhit vid visoti dereva Programist maye takozh peresvidchitis sho vkazivnik na batkivsku vershinu dlya ekskorenevoyi vkazuye na vershinu sho zajnyala yiyi misce Takozh programist maye zanotuvati sho zagalnij korin dereva mozhe zminitisya tozh treba buti oberezhnim iz vkazivnikami Povorot dlya balansuvannyaGrafichne poyasnennya yakim chinom povorot zbalansovuye AVL derevo Derevo mozhe buti zbalansovane vikoristovuyuchi povoroti Pislya povorotu odna iz storin zbilshuye visotu na odinicyu u toj chas yak insha zmenshuye Otzhe vazhlivo vikoristovuvati povoroti dlya vershin u yakih visota livogo i pravogo piddereva riznitsya bilshe nizh na odinicyu Samozbalansovani dereva poshuku roblyat ce avtomatichno AVL derevo vikoristovuye take zbalansuvannya Vidstan obertannyaVidstan obertannya mizh bud yakimi dvoma binarnimi derevami z odnakovoyu kilkistyu vershin minimalna kilkist neobhidnih povorotiv dlya peretvoryuvannya odnogo dereva v druge Z ciyeyu vidstannyu nabir n vershinnih derev staye metrichnim prostorom vidstan obertannya simetrichna dodatkova koli dva dereva rizni i vlashtovuye nerivnosti trikutnika Prorahunok vidstani obertannya odna z vidkritih problem matematiki Posilannya angl Java applets demonstrating tree rotations angl The AVL Tree Rotations Tutorial RTF by John Hargrove angl Div takozhChervono chorne derevo Asociativnist