Datastrukturer og algoritmer

Tree Data Structure Tutorial for Beginners

Tree Data Structure Tutorial for Beginners

Introduksjon

Et tre i programvare er som et biologisk tre, men med følgende forskjeller:

Grenene til programvaretreet er representert med rette linjer. Et godt eksempel på et programvaretre du kanskje har brukt, er katalogtreet til datamaskinens harddisk.

Det finnes forskjellige trær. Det er det generelle treet som andre trær kommer fra. Andre trær er avledet ved å innføre begrensninger i det generelle treet. For eksempel vil du kanskje ha et tre der ikke mer enn to grener stammer fra en node. et slikt tre vil bli kalt et binært tre.  Denne artikkelen beskriver det generelle treet og hvordan du får tilgang til alle nodene.

Hyperkoblingen for å laste ned koden er gitt nederst i denne artikkelen.

For å forstå kodeeksemplene i denne artikkelen, må du ha grunnleggende kunnskap i JavaScript (ECMAScript). Hvis du ikke har den kunnskapen, kan du få den fra http: // www.bredt nettverk.com / ChrysanthusForcha-1 / ECMAScript-2015-Course.htm

Det generelle trediagrammet


'A' er rotnoden; det er første nivå node. B, C, D er på andre linje; dette er andre nivå noder. E, F, G, H, I, J, K er på tredje linje, og de er tredje nivå noder. En fjerde linje ville ha produsert fjerde nivå noder, og så videre.

Treegenskaper

- Alle grener for alle nivåer av noder, har én kilde, som er rotnoden.

- Et tre har N - 1 grener, hvor N er totalt antall noder. Ovenstående diagram for det generelle treet har 11 noder og 10 grener.

- I motsetning til mennesker, hvor hvert barn har to foreldre, med programvaretreet, har hvert barn bare en forelder. Rotnoden er den største forfedren. En forelder kan ha mer enn ett barn. Hver node, unntatt rotnoden, er et barn.

Treordforråd

Traversing All Nodes of A Tree

Alle noder i et tre er tilgjengelige for å lese eller endre hvilken som helst verdi av noden. Dette gjøres imidlertid ikke vilkårlig. Det er tre måter å gjøre dette på, som alle involverer Depth-First Traversal som følger:

1) Bestilt: Enkelt sagt, i denne ordningen krysses venstre undertre først; deretter får du tilgang til rotnoden; deretter krysses det rette undertreet. Denne ordningen er symbolisert som venstre-> rot-> høyre. Fig 1 vises her for enkel referanse:

Forutsatt at det er to søsken per node; deretter venstre-> rot-> høyre betyr, du får tilgang til den nederste og venstre noden først, deretter foreldren til noden, og deretter høyre søsken. Når det er mer enn to søsken, ta den første som venstre og resten av høyre noder, som høyre. For det generelle treet over er tilgang til nederste venstre undertre for å ha, [EBF]. Dette er et undertreet. Forelderen til dette undertreet er A; så er A nå tilgjengelig for å ha [EBF] A. Deretter får du tilgang til undertreet [GCHI] for å ha et større undertreet, [[EBF] A [GCHI]]. Du kan se den venstre-> rot-> høyre profilen som skildrer seg selv. Dette store venstre undertreet vil ha undertreet, [JDK] til høyre for å fullføre traverseringen for å oppnå, [[EBF] A [GCHI]] [JDK].

2) Forhåndsbestill: Enkelt sagt, i denne ordningen er tilgang til rotnoden først, deretter krysses venstre undertre neste, og deretter krysses høyre undertre. Denne ordningen er symbolisert som rot-> venstre-> høyre. Fig 1 vises her for enkel referanse.

Forutsatt at det er to søsken per node; deretter betyr rot-> venstre-> høyre, du får tilgang til roten først, deretter venstre nærmeste barn, og deretter høyre nærmeste barn. Når det er mer enn to søsken, ta den første som venstre og resten av høyre noder, som høyre. Det venstre barnet til det venstre barnet er det neste man får tilgang til. For det generelle treet ovenfor er rotundertreet [ABCD]. Til venstre for dette undertreet har du undertreet, [EF], som gir tilgangssekvensen, [ABCD] [EF]. Til høyre for dette større undertræret har du to undertrær, [GHI] og [JK], som gir den fullstendige sekvensen, [ABCD] [EF] [GHI] [JK]. Du kan se rot-> venstre-> høyre profil som skildrer seg selv.

3) Postordre: Enkelt sagt, i denne ordningen krysses venstre undertre først, deretter krysses høyre undertre, og deretter får du tilgang til roten. Denne ordningen er symbolisert som venstre-> høyre-> rot. Fig 1 vises her for enkel referanse.

For dette treet er undertrærne, [EFB], [GHIC], [JKD] og [A] som danner sekvensen, [EFB], [GHIC], [JKD] [A]. Du kan se venstre-> høyre-> rotprofil som skildrer seg selv.

Lage treet

Ovenstående tre blir opprettet ved hjelp av ECMAScript, som er som den siste versjonen av JavaScript. Hver node er en matrise. Det første elementet i hver node-array er nodens overordnede, en annen array. Resten av elementene i noden er nodenes barn, og begynner fra det venstre barnet. Det er et ECMAScript-kart som knytter hver matrise til den tilsvarende strengen (bokstaven). Det første kodesegmentet er: