В інформатиці трійкове дерево — деревоподібна структура даних, у якій кожен вузол має не більше трьох дочірніх вузлів, які зазвичай називають «лівим», «середнім» і «правим». Вузли з дочірніми вузлами є батьківськими, а дочірні вузли можуть містити посилання на своїх батьків. Поза деревом часто є посилання на «кореневий» вузол (предок усіх вузлів), якщо він існує. До будь-якого вузла в структурі даних можна дістатися, починаючи з кореневого вузла та багаторазово переходячи за посиланням на лівий, середній або правий дочірній вузол.
Трійкові дерева використовують для реалізації трійкових дерев пошуку та трійкових куп.
Визначення
- Спрямоване ребро — зв'язок від батьківського до дочірнього вузла.
- Корінь — вузол без предків. У кореневому дереві є не більше одного кореневого вузла.
- Листковий вузол — будь-який вузол, який не має дочірніх елементів.
- Батьківський вузол — будь-який вузол, з'єднаний спрямованим ребром із дочірнім або дочірніми вузлами.
- Дочірній вузол — будь-який вузол, з'єднаний з батьківським вузлом спрямованим ребром.
- Глибина — довжина шляху від кореня до вузла. Набір усіх вузлів на заданій глибині іноді називають рівнем дерева. Кореневий вузол лежить на нульовій глибині.
- Висота — довжина шляху від кореня до найглибшого вузла дерева. Дерево (кореневе) лише з одним вузлом (коренем) має висоту нуль. У прикладі на малюнку дерево має висоту 2.
- Брати, сестри — вузли зі спільним батьківським вузлом.
Вузол p є предком вузла q, якщо він існує на шляху від q до кореня. Тоді вузол q називають нащадком p.
Розмір вузла — кількість його нащадків, включно з ним самим.
Властивості трійкових дерев
- Найбільша кількість вузлів
Нехай — висота трійкового дерева.
Нехай — найбільша кількість вузлів у трійковому дереві висотою h.
h | M(h) |
---|---|
0 | 1 |
1 | 4 |
2 | 13 |
3 | 40 |
Тоді
Отже, кожне дерево висотою h має не більше вузлів.
Якщо вузол має в дереві номер , то:
- його лівий дочірній елемент має номер ;
- середній — ;
- правий — .
Загальні операції
Вставлення
Вузол можна вставити в трійкове дерево між трьома іншими вузлами або додати після зовнішнього вузла. У трійкових деревах вузол, який вставляється, визначається своїм предком.
Зовнішні вузли
Щоб додати новий вузол після вузла A, для A новий вузол призначають одним із дочірніх, а сам вузол A призначають батьківським для нового вузла.
Внутрішні вузли
Вставлення внутрішніх вузлів складніше, ніж зовнішніх. Нехай, A — внутрішній вузол, а вузол B — його дочірній вузл. (Якщо треба вставити правий дочірній елемент, то B є правим дочірнім вузлом A, і так само зі вставленням лівого дочірнього або середнього дочірнього вузлів.) A призначає новий вузло свім дочірнім вузлом, а новий вузол призначає A своїм батьківським вузлом. Потім новий вузол призначає своїм дочірнім вузлом B, а B призначає новий вузол своїм батьківським вузлом.
Видалення
Видалення — це процес вилучення вузла з дерева. Лише певні вузли з трійкового дерева можна видалити однозначно.
Вузол з нулем або одним дочірнім елементом
Нехай A — вузол, який потрібно видалити. Якщо він не має дочірніх вузлів ((зовнішній вузол)), то в батьківського щодо A вузла для дочірнього вузла встановлюється значення null, а в A — значення null . Якщо він має один дочірній елемент, в цього дочірнього елемента значення батьківського елемента встановлюється з A, а в батьківського елемента для A — значення дочірнього з A.
Порівняння з іншими деревами
Нижче зображено бінарне дерево пошуку, яке представляє 12 дволітерних слів. Усі вузли в лівому дочірньому елементі мають менші значення, тоді як у правому дочірньому елементі всі вузли мають більші значення. Пошук починається з кореня. Щоб знайти слово «on», порівнюємо його з «in» і беремо праву гілку. За кожного порівняння перевіряється кожен символ обох слів.
in / \ be of / \ / \ as by is or \ \ \ / \ at he it on to
Для цифрового пошуку намагаються зберігати рядки символ за символом. Наступне зображення — це дерево, яке представляє той самий набір із 12 слів:
_ _ _ _ _ _ _ _ _ _ _ _ _ / / / \ \ \ / / / \ \ \ a b h i o t / \ / \ | / | \ /|\ | s t e y e n s t f n r o as at be by he in is it of on or to
Кожне вхідне слово показано під вузлом, який йому відповідає. У дереві, що представляє слова з малих літер, кожен вузол має 26 розгалужень. Пошук дуже швидкий: пошук «IS» починається з кореня, переходить до гілки «I», потім гілки «S» і закінчується в потрібному вузлі. У кожному вузлі можна отримати доступ до елемента масиву, перевірити, чи дорівнює він null, і створити гілку.
i / | \ / | \ b s o / | \ / \ | \ a e h n t n t | \ | / \ | s y e f r o \ t
Вище зображено збалансоване трійкове дерево пошуку для того самого набору з 12 слів. Вказівники для більшого й меншого значень показано похилими лініями, тоді як вказівники для рівних значень — вертикальними лініями. Пошук слова «is» починається з кореня, продовжується «рівним» дочірнім елементом до вузла зі значенням «S» і зупиняється на цьому після двох порівнянь. Для пошуку «ax», перш ніж повідомити, що слова немає в дереві, виконується три порівняння з першою літерою «A» і два порівняння з другою літерою «X».
Приклади трійкових дерев
- Трійкове дерево пошуку
- Трійкова купа
- Два нескінченних трійкових дерева, що містять усі примітивні піфагорові трійки, описано в статтях [en] і [en]. Кореневий вузол обох дерев містить трійку [3,4,5].
Див. також
Примітки
- Jon Bentley and Bob Sedgewick (1998), Dr. Dobb's Journal
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
V informatici trijkove derevo derevopodibna struktura danih u yakij kozhen vuzol maye ne bilshe troh dochirnih vuzliv yaki zazvichaj nazivayut livim serednim i pravim Vuzli z dochirnimi vuzlami ye batkivskimi a dochirni vuzli mozhut mistiti posilannya na svoyih batkiv Poza derevom chasto ye posilannya na korenevij vuzol predok usih vuzliv yaksho vin isnuye Do bud yakogo vuzla v strukturi danih mozhna distatisya pochinayuchi z korenevogo vuzla ta bagatorazovo perehodyachi za posilannyam na livij serednij abo pravij dochirnij vuzol Proste ternarne derevo rozmirom 10 i visotoyu 2 Trijkovi dereva vikoristovuyut dlya realizaciyi trijkovih derev poshuku ta trijkovih kup ViznachennyaSpryamovane rebro zv yazok vid batkivskogo do dochirnogo vuzla Korin vuzol bez predkiv U korenevomu derevi ye ne bilshe odnogo korenevogo vuzla Listkovij vuzol bud yakij vuzol yakij ne maye dochirnih elementiv Batkivskij vuzol bud yakij vuzol z yednanij spryamovanim rebrom iz dochirnim abo dochirnimi vuzlami Dochirnij vuzol bud yakij vuzol z yednanij z batkivskim vuzlom spryamovanim rebrom Glibina dovzhina shlyahu vid korenya do vuzla Nabir usih vuzliv na zadanij glibini inodi nazivayut rivnem dereva Korenevij vuzol lezhit na nulovij glibini Visota dovzhina shlyahu vid korenya do najglibshogo vuzla dereva Derevo koreneve lishe z odnim vuzlom korenem maye visotu nul U prikladi na malyunku derevo maye visotu 2 Brati sestri vuzli zi spilnim batkivskim vuzlom Vuzol p ye predkom vuzla q yaksho vin isnuye na shlyahu vid q do korenya Todi vuzol q nazivayut nashadkom p Rozmir vuzla kilkist jogo nashadkiv vklyuchno z nim samim Vlastivosti trijkovih derevNajbilsha kilkist vuzliv Nehaj h displaystyle h visota trijkovogo dereva Nehaj M h displaystyle M h najbilsha kilkist vuzliv u trijkovomu derevi visotoyu h h M h 0 1 1 4 2 13 3 40 Todi M h 1 3 9 3 h i 0 h 3 i 3 h 1 1 2 displaystyle M h 1 3 9 cdots 3 h sum i 0 h 3 i frac 3 h 1 1 2 Otzhe kozhne derevo visotoyu h maye ne bilshe 3 h 1 1 2 displaystyle frac 3 h 1 1 2 vuzliv Yaksho vuzol N displaystyle N maye v derevi nomer k displaystyle k to jogo livij dochirnij element maye nomer 3 k 1 displaystyle 3k 1 serednij 3 k displaystyle 3k pravij 3 k 1 displaystyle 3k 1 Zagalni operaciyiVstavlennya Vuzol mozhna vstaviti v trijkove derevo mizh troma inshimi vuzlami abo dodati pislya zovnishnogo vuzla U trijkovih derevah vuzol yakij vstavlyayetsya viznachayetsya svoyim predkom Zovnishni vuzli Shob dodati novij vuzol pislya vuzla A dlya A novij vuzol priznachayut odnim iz dochirnih a sam vuzol A priznachayut batkivskim dlya novogo vuzla Vnutrishni vuzli Vstavlennya vnutrishnih vuzliv skladnishe nizh zovnishnih Nehaj A vnutrishnij vuzol a vuzol B jogo dochirnij vuzl Yaksho treba vstaviti pravij dochirnij element to B ye pravim dochirnim vuzlom A i tak samo zi vstavlennyam livogo dochirnogo abo serednogo dochirnogo vuzliv A priznachaye novij vuzlo svim dochirnim vuzlom a novij vuzol priznachaye A svoyim batkivskim vuzlom Potim novij vuzol priznachaye svoyim dochirnim vuzlom B a B priznachaye novij vuzol svoyim batkivskim vuzlom Vidalennya Vidalennya ce proces viluchennya vuzla z dereva Lishe pevni vuzli z trijkovogo dereva mozhna vidaliti odnoznachno Vuzol z nulem abo odnim dochirnim elementom Nehaj A vuzol yakij potribno vidaliti Yaksho vin ne maye dochirnih vuzliv zovnishnij vuzol to v batkivskogo shodo A vuzla dlya dochirnogo vuzla vstanovlyuyetsya znachennya null a v A znachennya null Yaksho vin maye odin dochirnij element v cogo dochirnogo elementa znachennya batkivskogo elementa vstanovlyuyetsya z A a v batkivskogo elementa dlya A znachennya dochirnogo z A Porivnyannya z inshimi derevamiNizhche zobrazheno binarne derevo poshuku yake predstavlyaye 12 dvoliternih sliv Usi vuzli v livomu dochirnomu elementi mayut menshi znachennya todi yak u pravomu dochirnomu elementi vsi vuzli mayut bilshi znachennya Poshuk pochinayetsya z korenya Shob znajti slovo on porivnyuyemo jogo z in i beremo pravu gilku Za kozhnogo porivnyannya pereviryayetsya kozhen simvol oboh sliv in be of as by is or at he it on to Dlya cifrovogo poshuku namagayutsya zberigati ryadki simvol za simvolom Nastupne zobrazhennya ce derevo yake predstavlyaye toj samij nabir iz 12 sliv a b h i o t s t e y e n s t f n r o as at be by he in is it of on or to Kozhne vhidne slovo pokazano pid vuzlom yakij jomu vidpovidaye U derevi sho predstavlyaye slova z malih liter kozhen vuzol maye 26 rozgaluzhen Poshuk duzhe shvidkij poshuk IS pochinayetsya z korenya perehodit do gilki I potim gilki S i zakinchuyetsya v potribnomu vuzli U kozhnomu vuzli mozhna otrimati dostup do elementa masivu pereviriti chi dorivnyuye vin null i stvoriti gilku i b s o a e h n t n t s y e f r o t Vishe zobrazheno zbalansovane trijkove derevo poshuku dlya togo samogo naboru z 12 sliv Vkazivniki dlya bilshogo j menshogo znachen pokazano pohilimi liniyami todi yak vkazivniki dlya rivnih znachen vertikalnimi liniyami Poshuk slova is pochinayetsya z korenya prodovzhuyetsya rivnim dochirnim elementom do vuzla zi znachennyam S i zupinyayetsya na comu pislya dvoh porivnyan Dlya poshuku ax persh nizh povidomiti sho slova nemaye v derevi vikonuyetsya tri porivnyannya z pershoyu literoyu A i dva porivnyannya z drugoyu literoyu X Prikladi trijkovih derevTrijkove derevo poshuku Trijkova kupa Dva neskinchennih trijkovih dereva sho mistyat usi primitivni pifagorovi trijki opisano v stattyah en i en Korenevij vuzol oboh derev mistit trijku 3 4 5 Div takozhDvijkove derevo Iyerarhichna strukturaPrimitkiJon Bentley and Bob Sedgewick 1998 Dr Dobb s Journal