Де́рево (англ. tree) — в інформатиці та програмуванні одна з найпоширеніших структур даних. В математиці дерево визначається як скінченна множина Т з однією або більше вершин (вузлів, nodes), яка задовольняє наступні вимоги:
- існує один відокремлений вузол — корінь (root) дерева;
- інші вузли (за винятком кореня) розподілені серед m ≥ 0 непересічних множин T1…Tm і кожна з цих множин, в свою чергу, є деревом. Дерева T1…Tm мають назву піддерев (subtrees) даного кореня.
Визначення
Дерево (можливо, нелінійне) — структура даних, яка складається з вузлів (вершин) і ребер, без будь-яких циклів. Дерево без вузлів називається нульовим або порожнім деревом. Дерево, яке не є порожнім, складається з кореневого вузла і багатьох рівнів додаткових вузлів, які утворюють ієрархію.
Використовувана термінологія
- Корінь — верхній вузол в дереві.
- Дитина — вузол, безпосередньо приєднаний до іншого на шляху від кореня.
- Батько — зворотне поняття до дитини.
- Брати, сестри — вузли з того ж батька.
- Нащадок — вузол, досяжний послідовними переходами від батька до дитини.
- Предок — вузол, досяжний послідовними переходами від дитини до батька.
- Лист (також Зовнішній вузол) — вузол, який не має дітей.
- Внутрішній вузол — вузол, який має щонайменше одну дитину.
- Степінь вузла — кількість піддерев даного вузла.
- Ребро — з'єднання від одного вузла до іншого.
- Шлях — послідовність вершин і ребер, що з'єднують вузол з нащадком.
- Рівень — 1 + число зв'язків між вузлом і коренем.
- Висота дерева — число ребер найдовшого шляху між коренем і листом.
- Висота вузла — число ребер на найдовшому низхідному шляху від заданого вузла до листа.
- Глибина — число ребер від кореневого вузла дерева до заданого.
- Ліс — набір n ≥ 0 непересічних дерев.
Властивості
З визначення випливає, що кожна вершина є в свою чергу коренем деякого піддерева. Кількість піддерев вершини має назву ступеня (degree) цієї вершини. Вершина ступеню нуль має назву кінцевої (terminal) або листа (leaf). Некінцева вершина також має назву вершини розгалуження (branch node).
Нехай x — довільна вершина дерева з коренем r. Тоді існує єдиний шлях з r до x. Усі вершини на цьому шляху називаються предками (ancestors) x; якщо деяка вершина y є предком x, то x називається нащадком (descendant) y. Нащадки та предки вершини x, що не збігаються з нею самою, називаються власними нащадками та предками. Кожну вершину x, в свою чергу, можна розглядати як корінь деякого піддерева, елементами якого є вершини-нащадки x.
Якщо вершина x є предком y та не існує вершин поміж ними (тобто x та y з'єднані одним ребром), а також існують предки для x (тобто x не є коренем), то вершина x називається батьком (parent) до y, а y — дитиною (child) x. Коренева вершина єдина не має батьків.
Вершини, що мають спільного батька, називаються братами (siblings). Вершини, що мають дітей, називаються внутрішніми (internal). Глибиною вершини x називається довжина шляху від кореня до цієї вершини. Максимальна глибина вершин дерева називається висотою.
Якщо існує відносний порядок на піддеревах T1…Tm, то таке дерево називається впорядкованим (ordered tree) або пласким (plane tree).
Лісом (англ. forest) називають множину дерев, які не перетинаються.
Найчастіше дерева в інформатиці зображують з коренем, який знаходиться зверху (говорять, що дерево в інформатиці «росте вниз»).
Важливим окремим випадком кореневих дерев є бінарні дерева, які широко застосовуються в програмуванні і визначаються як множина вершин, яка має виокремлений корінь та два піддерева (праве та ліве), що не перетинаються, або є пустою множиною вершин (на відміну від звичайного дерева, яке не може бути пустим).
Піддерева
Піддерево — частина деревоподібної структури даних, яка може бути представлена у вигляді окремого дерева. Будь-який вузол дерева T разом з усіма його вузлами-нащадками є піддеревом дерева T. Для будь-якого вузла піддерева або має бути шлях в кореневий вузол цього піддерева, або сам вузол повинен бути кореневим. Тобто піддерево пов'язано з кореневим вузлом цілого дерева, а відносини піддерева з усіма іншими вузлами визначаються через поняття відповідне піддерево (за аналогією з терміном «відповідна підмножина»).
Упорядкування дерев
Існує два основних типи дерев. У рекурсивному або невпорядкованому дереві має значення лише структура самого дерева без урахування порядку нащадків для кожного вузла. Дерево, в якому є заданий порядок (наприклад, кожному ребру, провідному до нащадка, присвоєні різні натуральні числа) називається деревом з іменованими ребрами або впорядкованим деревом зі структурою даних, заданої перед ім'ям. Впорядковані дерева є найбільш поширеними серед деревоподібних структур. Двійкове дерево пошуку — одне з різновидів упорядкованого дерева. Двійкове дерево — структура даних у вигляді дерева, в якому кожна вершина має не більше двох дітей. Зазвичай такі діти називаються правим та лівим. На базі двійкових дерев будуються такі структури, як двійкові дерева пошуку та двійкові купи.
Представлення дерев
Існує безліч різних способів представлення дерев. Найбільш загальний спосіб представлення зображує вузли як записи, розташовані в динамічно виділеній пам'яті з вказівниками на своїх нащадків, предків (або і тих і інших), або, як елементи масиву, пов'язані між собою відносинами, визначеними їх позиціями в масиві (наприклад, двійкова купа).
Дерева як графи
В теорії графів, дерево — зв'язний ациклічний граф. Кореневе дерево — це граф з вершиною, виділеною як коренева. У цьому випадку будь-які дві вершини, пов'язані ребром, успадковують відносини «батько-нащадок». Незв'язний граф, що складається виключно з дерев, називається лісом.
Методи обходу
Покроковий перебір елементів дерева по зв'язкам між вузлами-предками і вузлами-нащадками називається обходом дерева. Найчастіше, операція може бути виконана переходами вказівника на окремі вузли. Обхід, при якому кожен вузол-предок проглядається раніше його нащадків називається предвпорядкованим обходом або обходом в прямому порядку (pre-order walk), а коли проглядаються спочатку нащадки, а потім предки, то обхід називається післявпорядкованим обходом або обходом у зворотному порядку (post-order walk). Існує також симетричний обхід, при якому відвідується спочатку ліве піддерево, потім вузол, потім — праве піддерево, і обхід в ширину, при якому вузли відвідуються рівень за рівнем (N-й рівень дерева — безліч вузлів з висотою N). Кожен рівень обходиться зліва направо.
Обхід бінарного дерева передбачає відвідування усіх вершин бінарного дерева, при цьому кожна з вершин відвідується тільки один раз. Існують три види таких обходів, кожний з яких визначається рекурсивно:
- прямий порядок (англ. preorder) наступної послідовності:
- відвідати корінь
- відвідати ліве піддерево
- відвідати праве піддерево
- Тобто, в такому порядку обходу кожна вершина відвідується до того, як будуть відвідані її діти.
- зворотний порядок (англ. postorder) наступної послідовності:
- Тобто, в такому порядку кожна вершина відвідується лише після того, як будуть відвідані її діти.
- центрований (центральний) порядок (англ. inorder) наступної послідовності:
- відвідати ліве піддерево
- відвідати корінь
- відвідати праве піддерево
- В такому порядку кожна вершина відвідується між відвіданням лівої та правої дитини. Такий порядок особливо часто застосовується в бінарних деревах пошуку, тому що дає можливість обходу вершин у порядку збільшення їхніх порядкових номерів.
Для цього бінарного дерева,
- Прямий порядок: 2, 7, 2, 6, 5, 11, 5, 9, 4
- Зворотний порядок: 2, 5, 11, 6, 7, 4, 9, 5, 2
- Центрований (центральний) порядок: 2, 7, 5, 6, 11, 2, 5, 4, 9
Операції над деревом
- обхід вершин в різному порядку
- перенумерація вершин
- пошук елемента
- додавання елемента у визначене місце в дереві
- видалення елемента
- видалення цілого фрагмента дерева
- додавання цілого фрагмента дерева
- трансформації (повороти) фрагментів дерева
- знаходження кореня для будь-якої вершини
Найбільшого розповсюдження ці структури даних набули в тих задачах, де необхідне маніпулювання з ієрархічними даними, ефективний пошук в даних, їхнє структуроване зберігання та модифікація.
Загальне застосування
- управління ієрархією даних;
- спрощення пошуку інформації (див. обхід дерева);
- управління сортованими списками даних;
- синтаксичний аналіз виразів (англ. parsing), оптимізація програм;
- як технологія компонування цифрових зображень для отримання різних візуальних ефектів;
- форма прийняття багатоетапного рішення (див. ділові шахи).
Див. також
Примітки
- Дерево // Словник української мови : у 20 т. — К. : Наукова думка, 2010—2022.
Джерела
- Дональд Кнут. Fundamental Algorithms // The Art of Computer Programming. — Massachusetts : Addison–Wesley, 1997. — Т. 1. — 650 с. — .(англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Div takozh Derevo teoriya grafiv De revo angl tree v informatici ta programuvanni odna z najposhirenishih struktur danih V matematici derevo viznachayetsya yak skinchenna mnozhina T z odniyeyu abo bilshe vershin vuzliv nodes yaka zadovolnyaye nastupni vimogi isnuye odin vidokremlenij vuzol korin root dereva inshi vuzli za vinyatkom korenya rozpodileni sered m 0 neperesichnih mnozhin T1 Tm i kozhna z cih mnozhin v svoyu chergu ye derevom Dereva T1 Tm mayut nazvu pidderev subtrees danogo korenya DerevoViznachennyaDerevo mozhlivo nelinijne struktura danih yaka skladayetsya z vuzliv vershin i reber bez bud yakih cikliv Derevo bez vuzliv nazivayetsya nulovim abo porozhnim derevom Derevo yake ne ye porozhnim skladayetsya z korenevogo vuzla i bagatoh rivniv dodatkovih vuzliv yaki utvoryuyut iyerarhiyu Ne derevo neoriyento vanij cikl 1 2 4 3Ne derevo cikl B C E D BNe derevo cikl A ATrivialne derevoNe derevo dvi nezv yazni chastini A B i C D EVikoristovuvana terminologiyaKorin verhnij vuzol v derevi Ditina vuzol bezposeredno priyednanij do inshogo na shlyahu vid korenya Batko zvorotne ponyattya do ditini Brati sestri vuzli z togo zh batka Nashadok vuzol dosyazhnij poslidovnimi perehodami vid batka do ditini Predok vuzol dosyazhnij poslidovnimi perehodami vid ditini do batka List takozh Zovnishnij vuzol vuzol yakij ne maye ditej Vnutrishnij vuzol vuzol yakij maye shonajmenshe odnu ditinu Stepin vuzla kilkist pidderev danogo vuzla Rebro z yednannya vid odnogo vuzla do inshogo Shlyah poslidovnist vershin i reber sho z yednuyut vuzol z nashadkom Riven 1 chislo zv yazkiv mizh vuzlom i korenem Visota dereva chislo reber najdovshogo shlyahu mizh korenem i listom Visota vuzla chislo reber na najdovshomu nizhidnomu shlyahu vid zadanogo vuzla do lista Glibina chislo reber vid korenevogo vuzla dereva do zadanogo Lis nabir n 0 neperesichnih derev VlastivostiZ viznachennya viplivaye sho kozhna vershina ye v svoyu chergu korenem deyakogo piddereva Kilkist pidderev vershini maye nazvu stupenya degree ciyeyi vershini Vershina stupenyu nul maye nazvu kincevoyi terminal abo lista leaf Nekinceva vershina takozh maye nazvu vershini rozgaluzhennya branch node Nehaj x dovilna vershina dereva z korenem r Todi isnuye yedinij shlyah z r do x Usi vershini na comu shlyahu nazivayutsya predkami ancestors x yaksho deyaka vershina y ye predkom x to x nazivayetsya nashadkom descendant y Nashadki ta predki vershini x sho ne zbigayutsya z neyu samoyu nazivayutsya vlasnimi nashadkami ta predkami Kozhnu vershinu x v svoyu chergu mozhna rozglyadati yak korin deyakogo piddereva elementami yakogo ye vershini nashadki x Yaksho vershina x ye predkom y ta ne isnuye vershin pomizh nimi tobto x ta y z yednani odnim rebrom a takozh isnuyut predki dlya x tobto x ne ye korenem to vershina x nazivayetsya batkom parent do y a y ditinoyu child x Koreneva vershina yedina ne maye batkiv Vershini sho mayut spilnogo batka nazivayutsya bratami siblings Vershini sho mayut ditej nazivayutsya vnutrishnimi internal Glibinoyu vershini x nazivayetsya dovzhina shlyahu vid korenya do ciyeyi vershini Maksimalna glibina vershin dereva nazivayetsya visotoyu Yaksho isnuye vidnosnij poryadok na pidderevah T1 Tm to take derevo nazivayetsya vporyadkovanim ordered tree abo plaskim plane tree Lisom angl forest nazivayut mnozhinu derev yaki ne peretinayutsya Najchastishe dereva v informatici zobrazhuyut z korenem yakij znahoditsya zverhu govoryat sho derevo v informatici roste vniz Vazhlivim okremim vipadkom korenevih derev ye binarni dereva yaki shiroko zastosovuyutsya v programuvanni i viznachayutsya yak mnozhina vershin yaka maye viokremlenij korin ta dva piddereva prave ta live sho ne peretinayutsya abo ye pustoyu mnozhinoyu vershin na vidminu vid zvichajnogo dereva yake ne mozhe buti pustim PidderevaPidderevo chastina derevopodibnoyi strukturi danih yaka mozhe buti predstavlena u viglyadi okremogo dereva Bud yakij vuzol dereva T razom z usima jogo vuzlami nashadkami ye pidderevom dereva T Dlya bud yakogo vuzla piddereva abo maye buti shlyah v korenevij vuzol cogo piddereva abo sam vuzol povinen buti korenevim Tobto pidderevo pov yazano z korenevim vuzlom cilogo dereva a vidnosini piddereva z usima inshimi vuzlami viznachayutsya cherez ponyattya vidpovidne pidderevo za analogiyeyu z terminom vidpovidna pidmnozhina Uporyadkuvannya derevPriklad transformaciyi n arnogo dereva v dvijkove Isnuye dva osnovnih tipi derev U rekursivnomu abo nevporyadkovanomu derevi maye znachennya lishe struktura samogo dereva bez urahuvannya poryadku nashadkiv dlya kozhnogo vuzla Derevo v yakomu ye zadanij poryadok napriklad kozhnomu rebru providnomu do nashadka prisvoyeni rizni naturalni chisla nazivayetsya derevom z imenovanimi rebrami abo vporyadkovanim derevom zi strukturoyu danih zadanoyi pered im yam Vporyadkovani dereva ye najbilsh poshirenimi sered derevopodibnih struktur Dvijkove derevo poshuku odne z riznovidiv uporyadkovanogo dereva Dvijkove derevo struktura danih u viglyadi dereva v yakomu kozhna vershina maye ne bilshe dvoh ditej Zazvichaj taki diti nazivayutsya pravim ta livim Na bazi dvijkovih derev buduyutsya taki strukturi yak dvijkovi dereva poshuku ta dvijkovi kupi Predstavlennya derevIsnuye bezlich riznih sposobiv predstavlennya derev Najbilsh zagalnij sposib predstavlennya zobrazhuye vuzli yak zapisi roztashovani v dinamichno vidilenij pam yati z vkazivnikami na svoyih nashadkiv predkiv abo i tih i inshih abo yak elementi masivu pov yazani mizh soboyu vidnosinami viznachenimi yih poziciyami v masivi napriklad dvijkova kupa Dereva yak grafiV teoriyi grafiv derevo zv yaznij aciklichnij graf Koreneve derevo ce graf z vershinoyu vidilenoyu yak koreneva U comu vipadku bud yaki dvi vershini pov yazani rebrom uspadkovuyut vidnosini batko nashadok Nezv yaznij graf sho skladayetsya viklyuchno z derev nazivayetsya lisom Metodi obhoduDokladnishe Obhid dereva Pokrokovij perebir elementiv dereva po zv yazkam mizh vuzlami predkami i vuzlami nashadkami nazivayetsya obhodom dereva Najchastishe operaciya mozhe buti vikonana perehodami vkazivnika na okremi vuzli Obhid pri yakomu kozhen vuzol predok proglyadayetsya ranishe jogo nashadkiv nazivayetsya predvporyadkovanim obhodom abo obhodom v pryamomu poryadku pre order walk a koli proglyadayutsya spochatku nashadki a potim predki to obhid nazivayetsya pislyavporyadkovanim obhodom abo obhodom u zvorotnomu poryadku post order walk Isnuye takozh simetrichnij obhid pri yakomu vidviduyetsya spochatku live pidderevo potim vuzol potim prave pidderevo i obhid v shirinu pri yakomu vuzli vidviduyutsya riven za rivnem N j riven dereva bezlich vuzliv z visotoyu N Kozhen riven obhoditsya zliva napravo Obhid binarnogo dereva peredbachaye vidviduvannya usih vershin binarnogo dereva pri comu kozhna z vershin vidviduyetsya tilki odin raz Isnuyut tri vidi takih obhodiv kozhnij z yakih viznachayetsya rekursivno pryamij poryadok angl preorder nastupnoyi poslidovnosti vidvidati korin vidvidati live pidderevovidvidati prave pidderevoTobto v takomu poryadku obhodu kozhna vershina vidviduyetsya do togo yak budut vidvidani yiyi diti zvorotnij poryadok angl postorder nastupnoyi poslidovnosti vidvidati live pidderevovidvidati prave pidderevovidvidati korinTobto v takomu poryadku kozhna vershina vidviduyetsya lishe pislya togo yak budut vidvidani yiyi diti centrovanij centralnij poryadok angl inorder nastupnoyi poslidovnosti vidvidati live pidderevo vidvidati korin vidvidati prave pidderevoV takomu poryadku kozhna vershina vidviduyetsya mizh vidvidannyam livoyi ta pravoyi ditini Takij poryadok osoblivo chasto zastosovuyetsya v binarnih derevah poshuku tomu sho daye mozhlivist obhodu vershin u poryadku zbilshennya yihnih poryadkovih nomeriv Dlya cogo binarnogo dereva Pryamij poryadok 2 7 2 6 5 11 5 9 4Zvorotnij poryadok 2 5 11 6 7 4 9 5 2Centrovanij centralnij poryadok 2 7 5 6 11 2 5 4 9Operaciyi nad derevomobhid vershin v riznomu poryadku perenumeraciya vershin poshuk elementa dodavannya elementa u viznachene misce v derevi vidalennya elementa vidalennya cilogo fragmenta dereva dodavannya cilogo fragmenta dereva transformaciyi povoroti fragmentiv dereva znahodzhennya korenya dlya bud yakoyi vershini Najbilshogo rozpovsyudzhennya ci strukturi danih nabuli v tih zadachah de neobhidne manipulyuvannya z iyerarhichnimi danimi efektivnij poshuk v danih yihnye strukturovane zberigannya ta modifikaciya Zagalne zastosuvannyaupravlinnya iyerarhiyeyu danih sproshennya poshuku informaciyi div obhid dereva upravlinnya sortovanimi spiskami danih sintaksichnij analiz viraziv angl parsing optimizaciya program yak tehnologiya komponuvannya cifrovih zobrazhen dlya otrimannya riznih vizualnih efektiv forma prijnyattya bagatoetapnogo rishennya div dilovi shahi Div takozhDerevo teoriya grafiv Binarne derevo Binarne derevo poshuku Zbalansovane derevo B derevo AVL derevo Chervono chorne derevo Obhid dereva Rozshiryuvane derevo Derevna glibina teoriya grafiv PrimitkiDerevo Slovnik ukrayinskoyi movi u 20 t K Naukova dumka 2010 2022 DzherelaDonald Knut Fundamental Algorithms The Art of Computer Programming Massachusetts Addison Wesley 1997 T 1 650 s ISBN 0 201 89683 4 angl