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

Водич за структуру података о дрвету за почетнике

Водич за структуру података о дрвету за почетнике

Увод

Стабло у софтверу је попут биолошког стабла, али са следећим разликама:

Гране софтверског стабла представљене су правим линијама. Добар пример софтверског стабла које сте можда користили је стабло директоријума тврдог диска рачунара.

Постоје различите врсте дрвећа. Постоји опште стабло из којег потичу друга дрвећа. Остала стабла се изводе увођењем ограничења у опште стабло. На пример, можда ћете желети дрво где из чвора не произлазе више од две гране; такво дрво би се звало Бинарно дрво.  Овај чланак описује опште стабло и како приступити свим његовим чворовима.

Хипервеза за преузимање кода дата је на дну овог чланка.

Да бисте разумели узорке кода у овом чланку, морате да имате основно знање о ЈаваСцрипт-у (ЕЦМАСцрипт). Ако немате то знање, можете га добити на хттп: // ввв.широко-мрежа.цом / ЦхрисантхусФорцха-1 / ЕЦМАСцрипт-2015-Курс.хтм

Дијаграм општег дрвета


'А' је коријенски чвор; то је чвор првог нивоа. Б, Ц, Д су на другој линији; то су чворови другог нивоа. Е, Ф, Г, Х, И, Ј, К су на трећој линији и то су чворови трећег нивоа. Четврта линија би произвела чворове четвртог нивоа итд.

Својства стабла

- Све гране за све нивое чворова имају један извор, а то је коријенски чвор.

- Стабло има Н - 1 гране, где је Н укупан број чворова. Горњи дијаграм за опште стабло има 11 чворова и 10 грана.

- За разлику од људи, где свако дете има два родитеља, са стаблом софтвера, свако дете има само једног родитеља. Коренски чвор је највећи родитељ предака. Родитељ може имати више детета. Сваки чвор, осим основног, је дете.

Речник дрвећа

Прелазак свих чворова дрвета

Може се приступити свим чворовима стабла за читање или промену било које вредности чвора. Међутим, то се не ради произвољно. Постоје три начина да се то уради, а све то укључује дубинско-прво окретање на следећи начин:

1) Редослед: Једноставно речено, у овој шеми се прво пређе лево подстабло; затим се приступа коренском чвору; затим се прелази десно подстабло. Ова шема је симболизована као лево-> корен-> десно. Слика 1 је овде поново приказана ради лакшег сналажења:

Под претпоставком да постоје два брата и сестре по чвору; затим лево-> корен-> десно значи да прво приступате најнижем и крајњем левом чвору, затим родитељу чвора, а затим десном брату или сестри. Када има више од две браће и сестара, узми првог као левог, а остатак десног чвора као десног. За опште стабло горе, доњем левом подстаблу се приступа, [ЕБФ]. Ово је подстабло. Родитељ овог подстабла је А; тако да се следећем А приступа [ЕБФ] А. Затим се приступа подстаблу [ГЦХИ] да би се добило веће подстабло, [[ЕБФ] А [ГЦХИ]]. Можете видети леви-> роот-> десни профил како се приказује. Ово велико лево подстабло имаће подстабло, [ЈДК] с десне стране да заврши обилажење да би добило, [[ЕБФ] А [ГЦХИ]] [ЈДК].

2) Преднаруџба: Једноставно речено, у овој шеми се прво приступа коренском чвору, затим се прелази лево подстабло, а затим прелази десно подстабло. Ова шема је симболизована као роот-> лефт-> ригхт. Слика 1 је овде поново приказана ради лакшег сналажења.

Под претпоставком да постоје два брата и сестре по чвору; затим роот-> лефт-> ригхт значи, прво приступате корену, затим левом непосредном детету, а затим десном непосредном детету. Када је више од две браће и сестара, узми првог као левог, а остатак десног чвора као десног. Следеће дете левог детета је следеће коме треба приступити. За опште стабло горе, кореново подстабло је [АБЦД]. Лево од овог подстабла имате подстабло, [ЕФ], које даје приступну секвенцу, [АБЦД] [ЕФ]. Десно од овог већег подстабла имате два подстабла, [ГХИ] и [ЈК], дајући комплетну секвенцу, [АБЦД] [ЕФ] [ГХИ] [ЈК]. Можете видети основни-> леви-> десни профил који се приказује.

3) Пост-поруџбина: Једноставно речено, у овој схеми се прво пређе лево подстабло, затим десно, а затим се приступи корену. Ова шема је симболизована као леви-> десни-> корен. Слика 1 је овде поново приказана ради лакшег сналажења.

За ово стабло подстабла су [ЕФБ], [ГХИЦ], [ЈКД] и [А] који чине секвенцу, [ЕФБ], [ГХИЦ], [ЈКД] [А]. Можете видети леви-> десни-> роот профил који се приказује.

Стварање дрвета

Горње стабло ће бити направљено помоћу ЕЦМАСцрипта, који је попут најновије верзије ЈаваСцрипт-а. Сваки чвор је низ. Први елемент сваког поља чвора је родитељ чвора, другог низа. Остали елементи чвора су деца чвора, почевши од крајњег левог детета. Постоји мапа ЕЦМАСцрипт која повезује сваки низ са одговарајућим низом (словом). Први сегмент кода је: