Strukture podataka i algoritmi

Vodič za strukturu podataka o stablima za početnike

Vodič za strukturu podataka o stablima za početnike

Uvod

Stablo u softveru je poput biološkog stabla, ali sa sljedećim razlikama:

Grane softverskog stabla predstavljene su ravnim crtama. Dobar primjer softverskog stabla koje ste možda koristili je stablo direktorija tvrdog diska vašeg računala.

Postoje različite vrste drveća. Postoji opće stablo iz kojeg potječu druga stabla. Ostala stabla izvedena su uvođenjem ograničenja u opće stablo. Na primjer, možda biste željeli stablo na kojem iz čvora ne proizlaze više od dvije grane; takvo bi se stablo zvalo Binarno stablo.  Ovaj članak opisuje opće stablo i kako pristupiti svim njegovim čvorovima.

Hiperveza za preuzimanje koda navedena je na dnu ovog članka.

Da biste razumjeli uzorke koda u ovom članku, morate imati osnovno znanje o JavaScript-u (ECMAScript). Ako nemate to znanje, možete ga dobiti na http: // www.široko-mrežna.com / ChrysanthusForcha-1 / ECMAScript-2015-Tečaj.htm

Dijagram općeg stabla


'A' je korijenski čvor; to je čvor prve razine. B, C, D su na drugoj liniji; to su čvorovi druge razine. E, F, G, H, I, J, K su na trećem retku i to su čvorovi treće razine. Četvrti redak proizveo bi čvorove četvrte razine, i tako dalje.

Svojstva stabla

- Sve grane za sve razine čvorova imaju jedan izvor, a to je korijenski čvor.

- Stablo ima N - 1 grane, gdje je N ukupan broj čvorova. Gornji dijagram za opće stablo ima 11 čvorova i 10 grana.

- Za razliku od ljudi, gdje svako dijete ima dva roditelja, sa stablom softvera, svako dijete ima samo jednog roditelja. Korijenski čvor najveći je roditelj predaka. Roditelj može imati više djeteta. Svaki čvor, osim korijenskog čvora, dijete je.

Rječnik drveća

Obilazeći sve čvorove stabla

Može se pristupiti svim čvorovima stabla za čitanje ili promjenu bilo koje vrijednosti čvora. Međutim, to se ne radi samovoljno. Postoje tri načina za to, a sve uključuje dubinsko-prvo okretanje na sljedeći način:

1) Redoslijed: Jednostavno rečeno, u ovoj shemi prvo se prelazi lijevo podstablo; zatim se pristupa korijenskom čvoru; zatim se prelazi desno podstablo. Ova shema je simbolizirana kao lijevo-> korijen-> desno. Slika 1 ovdje je ponovno prikazana radi lakšeg snalaženja:

Pod pretpostavkom da postoje dva brata i sestre po čvoru; zatim lijevo-> korijen-> desno znači da prvo pristupate najnižem i krajnjem lijevom čvoru, zatim roditelju čvora, a zatim desnom brati ili sestri. Kad je više od dvije braće i sestara, uzmi prvi kao lijevi, a ostatak desnih čvorova kao desni. Za općenito stablo gore, donjem lijevom podstablu pristupa se tako da ima [EBF]. Ovo je podstablo. Roditelj ovog podstabla je A; dakle, slijedi pristup A s [EBF] A. Zatim se pristupa podstablu [GCHI] da bi se dobilo veće podstablo, [[EBF] A [GCHI]]. Možete vidjeti lijevi-> korijen-> desni profil koji se sam prikazuje. Ovo veliko lijevo podstablo imat će podstablo, [JDK] s desne strane da dovrši kretanje kako bi dobilo, [[EBF] A [GCHI]] [JDK].

2) Predbilježba: Jednostavno rečeno, u ovoj shemi prvo se pristupa korijenskom čvoru, zatim slijedi lijevo podstablo, a zatim desno. Ova shema je simbolizirana kao korijen-> lijevo-> desno. Slika 1 ovdje je ponovno prikazana radi lakšeg snalaženja.

Pod pretpostavkom da postoje dva brata i sestre po čvoru; zatim root-> lijevo-> desno znači, prvo pristupate korijenu, zatim lijevom neposrednom djetetu, a zatim desnom neposrednom djetetu. Kad je više od dvije braće i sestara, uzmi prvi kao lijevi, a ostatak desnih čvorova kao desni. Sljedeće kojem treba pristupiti je lijevo dijete lijevog djeteta. Za gornje opće stablo, korijensko podstablo je [ABCD]. Lijevo od ovog podstabla imate podstablo, [EF], koje daje pristupni slijed, [ABCD] [EF]. S desne strane ovog većeg podstabla imate dva podstabla, [GHI] i [JK], dajući kompletni slijed, [ABCD] [EF] [GHI] [JK]. Možete vidjeti korijen-> lijevi-> desni profil koji se sam prikazuje.

3) naknadna narudžba: Jednostavno rečeno, u ovoj shemi prvo se prelazi lijevo podstablo, zatim desno, a zatim se pristupa korijenu. Ova shema je simbolizirana kao lijevi-> desni-> korijen. Slika 1 ovdje je ponovno prikazana radi lakšeg snalaženja.

Za ovo su stablo podstabla: [EFB], [GHIC], [JKD] i [A] koji tvore slijed, [EFB], [GHIC], [JKD] [A]. Možete vidjeti lijevi-> desni-> korijenski profil koji se sam prikazuje.

Stvaranje stabla

Gornje stablo stvorit će se pomoću ECMAScripta, koji je poput najnovije verzije JavaScript-a. Svaki čvor je niz. Prvi element svakog polja čvora je roditelj čvora, drugi niz. Ostali elementi čvora su djeca čvora, počevši od krajnjeg lijevog djeteta. Postoji karta ECMAScript koja povezuje svaki niz sa pripadajućim nizom (slovom). Prvi segment koda je: