Структури на данни и алгоритми

Урок за структурата на дървесните данни за начинаещи

Урок за структурата на дървесните данни за начинаещи

Въведение

Дървото в софтуера е като биологично дърво, но със следните разлики:

Клоновете на софтуерното дърво са представени с прави линии. Добър пример за софтуерно дърво, което може да сте използвали, е дървото на директориите на твърдия диск на вашия компютър.

Има различни видове дървета. Има общото дърво, от което са получени други дървета. Други дървета се получават чрез въвеждане на ограничения в общото дърво. Например, може да искате дърво, където не повече от два клона произлизат от възел; такова дърво би било наречено двоично дърво.  Тази статия описва общото дърво и как да получите достъп до всички негови възли.

Хипервръзката за изтегляне на кода е дадена в долната част на тази статия.

За да разберете примерните кодове в тази статия, трябва да имате основни познания по JavaScript (ECMAScript). Ако нямате тези знания, можете да ги получите от http: // www.широка мрежа.com / ChrysanthusForcha-1 / ECMAScript-2015-Course.htm

Диаграма на общото дърво


„A“ е основният възел; това е възел от първо ниво. B, C, D са на втория ред; това са възли от второ ниво. E, F, G, H, I, J, K са на третия ред и са възли от трето ниво. Четвърти ред би създал възли от четвърто ниво и т.н.

Свойства на дърво

- Всички клонове за всички нива на възли имат един източник, който е основният възел.

- Дървото има N - 1 клона, където N е общият брой възли. Горната диаграма за общото дърво има 11 възли и 10 клона.

- За разлика от хората, където всяко дете има двама родители, със софтуерното дърво всяко дете има само един родител. Коренният възел е най-големият родител-предшественик. Родителят може да има повече от едно дете. Всеки възел, с изключение на главния възел, е дете.

Речник на дърветата

Преминаване през всички възли на дърво

Всички възли на дърво могат да бъдат достъпни за четене или промяна на всяка стойност на възела. Това обаче не се прави произволно. Има три начина за това, като всеки от тях включва обхождане на дълбочина - първо, както следва:

1) По поръчка: Просто казано, в тази схема първо се преминава през лявото поддърво; след това се осъществява достъп до коренния възел; след това се преминава през дясното поддърво. Тази схема е символизирана като ляво-> корен-> дясно. Фигура 1 е отново показана тук за лесна справка:

Ако приемем, че има двама братя и сестри на възел; след това наляво-> корен-> надясно означава, че първо влизате в най-долния и най-левия възел, след това в родителя на възела и след това в дясното братче. Когато има повече от двама братя и сестри, вземете първия като левия, а останалите десни възли като десния. За общото дърво по-горе, долното ляво поддърво има достъп до [EBF]. Това е поддърво. Родителят на това поддърво е A; така че следващият достъп се получава, за да има [EBF] A. След това се осъществява достъп до поддървото [GCHI], за да има по-голямо поддърво, [[EBF] A [GCHI]]. Можете да видите ляв-> корен-> десен профил, който се изобразява. Това голямо ляво поддърво ще има поддървото, [JDK] отдясно, за да завърши обхождането, за да получи, [[EBF] A [GCHI]] [JDK].

2) Предварителна поръчка: Просто казано, в тази схема първо се осъществява достъп до коренния възел, след това се преминава към лявото поддърво и след това към дясното поддърво. Тази схема е символизирана като корен-> ляво-> дясно. Фигура 1 е отново показана тук за лесна справка.

Ако приемем, че има двама братя и сестри на възел; след това root-> ляво-> дясно означава, първо имате достъп до корен, след това до лявото непосредствено дете и след това до дясното непосредствено дете. Когато има повече от двама братя и сестри, вземете първия като левия, а останалите десни възли като десния. Най-лявото дете на лявото дете е следващото, до което има достъп. За общото дърво по-горе коренното поддърво е [ABCD]. Вляво от това поддърво имате поддърво [EF], даващо последователността за достъп, [ABCD] [EF]. Вдясно от това по-голямо поддърво имате две поддървета, [GHI] и [JK], даващи пълната последователност, [ABCD] [EF] [GHI] [JK]. Можете да видите корен-> ляв-> десен профил, който се изобразява.

3) Следваща поръчка: Просто казано, в тази схема първо се преминава през лявото поддърво, след това се преминава през дясното поддърво и след това се осъществява достъп до корен. Тази схема е символизирана като ляв-> десен-> корен. Фигура 1 е отново показана тук за лесна справка.

За това дърво поддърветата са [EFB], [GHIC], [JKD] и [A], които образуват последователността, [EFB], [GHIC], [JKD] [A]. Можете да видите ляв-> десен-> профил на корена, който се изобразява.

Създаване на дървото

Горното дърво ще бъде създадено с помощта на ECMAScript, което е като последната версия на JavaScript. Всеки възел е масив. Първият елемент от всеки масив на възел е родителят на възела, друг масив. Останалите елементи на възела са деца на възела, започвайки от най-лявото дете. Има карта на ECMAScript, която свързва всеки масив със съответния низ (буква). Първият кодов сегмент е: