De structuur van de gegevens:

javascript boom, boom. Structuur van de gegevens:,,,,,,,,,, 53, 16 aandelen,,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen, een deel van de prijs van een reeks gegevens javascript javascript. Structuur van de gegevens: enkele lijst, dubbele die lijst, je creëert,,, boom is een van de meest voorkomende in de ontwikkeling van de website van de structuur van de gegevens.Het argument van de ontwikkelaars en gebruikers is goed.Elke webdesigners schrijven: //europa.eu.int /comm /en zet het op een web browser op het creëren van een boom, die bekend staat als de documentobjectmodellen (DOM).De mensen op het internet, elk van de gebruikers, de voorlichting van de consument is al op Internet ontvangen in de vorm van een dom.  , nu, hier, het hoogtepunt van je op dit moment aan het lezen, dat je browser in een boom.Het punt is, je leest de tekst in een < p>, -; en < p>, elementen... In een lichaam, < >,,, -; < body>, elementen... In een, < http: //europa.eu.int >  , yuan.,, de... Gegevens vergelijkbaar is met een stamboom.< http: //europa.eu.int > - de ouders, is het lichaam, < >, element is een kind, en p> <,;, element is het lichaam van een kind, een < >, yuan.Als deze vergelijking een boom lijkt nuttig voor je zijn, dan weet je meer van analoge, zal ons een boom in het proces van totstandbrenging van de troost vinden.  , en wij in dit artikel wordt het gebruik van twee verschillende methoden voor het creëren van een boom boom DFS (DFS) en bfs).Als je niet vertrouwd zijn met de woorden die, dat betekent het naar deze boom, voor elke module) de twee door de aandacht te vestigen op de verschillende vormen van de rol van de boom; niet alleen reizen, bovendien, met de structuur van de gegevens, hebben we in deze reeks.Het en laat het gebruik van Stack rij - toegang.COOL!En de boom (diepte en breedte eerste zoektocht), in de informatica, een boom is een structuur van de gegevens, de simulatie gestratificeerde gegevens en knooppunten.Elke boom node hebben hun eigen gegevens en andere gegevens die van node, knooppunten en de aanwijzing van de terminologie is waarschijnlijk de nieuwe sommige lezers, dus laten we gebruik maken van een soortgelijke methode te beschrijven.Laten we een boom en een organisatieschema te vergelijken.De kaart is een top plaats (root -), zoals de Chief Executive Officer.Direct onder deze positie van de andere functies, zoals de vice - voorzitter van de Commissie (Zp).  , dat deze relatie, we gebruiken met de pijl van directeur tot vice - president.Een positie als CEO, is een knooppunt; we van directeur tot vice - president van de betrekkingen is een aanwijzing.In het organisatieschema van de relatie tussen het creëren van meer, maar we herhalen van dit proces, we hebben een - op een andere lijn.  , in een concept, en ik hoop dat de knooppunten en aanwijzing van belang zijn.In een praktische niveau, en we kunnen profiteren van het gebruik van een meer technische voorbeeld.Laten we met dom.Dom is, < http: //europa.eu.int > element als bovenste positie (root -).Deze knoop, < hoofd >, - element en het volume, < >, yuan.Dit proces is in de DOM te herhalen.  , het ontwerp, de schoonheid van de capaciteit is... - een, < ul >, elementen, zoals bijvoorbeeld, kan er veel  , < li >, elementen in het nest, en elke, < li >, elementen kunnen broeders en zusters, < li >, knoop.Dit is vreemd, maar leuk en echt.,, activiteiten van elke boom boom, A, waarin onderwerpen is die kan worden bijeengeroepen, de formulering van een boom van een overzicht van de maatregelen van ons zal zijn -, en constructors:, boom,,.,,, -,,, gegevens, meer a.,, ouder, punten tot een node's parent., kinderen. De volgende punten te brengen, in de boom,.,,,, _root,   punten aan de wortel van A - tree., traverseDF (tweede ronde),   traverses, waarin van een boom met DFS., traverseBF (tweede ronde),   traverses, waarin van een boom met BFS.,, bevat (gegevens, traversal)   gezocht, voor A - in een tree.,, voeg (gegevens, toData, traverse),   A - A tree. beperking te verwijderen (,,,,,   removes A (moedermaatschappij) in een tree.  ,, de uitvoering van een boom, en laten we nu eens kijken naar de Code voor een boom schrijven.,,, eigendom van een gezamenlijke, we  , de uitvoering, de vaststelling van een naam noemen - en de fabrikant, de bomen, de functie, en knooppunten (gegevens) {this.data = gegevens; this.parent = nul; this.children = [...];}, elke node voorbeelden bevat drie eigenschappen gegevens:,,, ouders, kinderen, en het behoud van de eerste eigendom,,.   gegevens in verband met de knopen.De tweede eigenschap wijzen op een knoop.Het derde kenmerk van veel kinderen -,.,, de aard van de boom, en nu, laten we de definitie van de fabrikant zelf, de bomen, met inbegrip van de definitie van fabrikant, -,  :  , functie, boom (gegevens) {VAR (= nieuwe module (gegevens); dit _root = knooppunten;}.,,,., omvat twee lijnen van de code.De eerste regel van het creëren van een nieuw voorbeeld knooppunten; op de tweede rij van toewijzing van node, als een boom wortels.  , de definitie, de bomen, de  ,  , knopen, slechts een paar regels code.Echter, deze lijn is genoeg, om ons te helpen de simulatie gestratificeerde gegevens.Om te bewijzen dat dit een beetje, laten we een paar voorbeelden van gegevens tot een voorbeeld, de bomen, de (en indirect -).,, var. = nieuwe boom ('ceo "); ///////- data:" directeur ": kinderen, ouders,: [...]} boom, als gevolg van het bestaan van _root;,. Ouders, kinderen, en de toevoeging van een kind -, kunnen wij, _root, en die, _root, voor degenen die - ouders.Met andere woorden, we kunnen de analoge gestratificeerde gegevens creëren.  , de methode, de boom, de volgende stap, creëren we de volgende vijf middelen aan:  ,,,,,,,, de boom, traversedf (terug),,,,, traversebf (terug), met inbegrip van (gegevens die),,, de toevoeging van kinderen, ouders,,, geschrapt) (knooppunten, moeder), een boom, omdat elke methode moeten we gebruikmaken van een boom, en we zullen dat in de eerste plaats voor de definitie van de verschillende soorten, de boom.(boom is dat aan een boom, elk knooppunt vormen)  ,,, 1, 5:traversedf (terug),,,,, de methode van de diepte van de boom van de prioritaire zoeken. ,, tree.prototype.traversedf = functie (call - back -) {///////- dit is een herhaling van de functie (recursief (onmiddellijk stappen CurrentNode) {///////2 (VAR i = 0, lengte = currentnode.children.length; ik < lengte; I + +) (///////3 recursief (CurrentNode. [voor mijn kind]) ///////.} stap 4 - CurrentNode); ///////de stappen 1}) (deze. _root);};,,, traversedf (terug), is een argument dat, terug.Als dat niet duidelijk is, de naam van de call - back -, kan een functie, die voor de toekomst van de  , traversedf (call - back -).  ,  , lichaam, traversedf (terug), die een andere functie   nomenclatuur, Bug.Deze functie is een herhaling   functie.Met andere woorden, het is zelf bellen en zichzelf te beëindigen.In de opmerkingen over de door de stappen, herhaling, zal ik de algemene beschrijving van de terugkerende, door de hele boom.  , is als volgt:  ,, onmiddellijk, Bug, en een boom als parameter.Op dit moment, CurrentNode, wijst op de huidige node.  , input, de recycling en de herhaling van elk kind een keer, CurrentNode,, te beginnen met de eerste kind in het lichaam.  , de cyclus, een kind, een recursief, CurrentNode,.De exacte kinderen hangt af van de huidige versie van de,, verkeer.  , als CurrentNode, er is geen baby meer, we stoppen, de ring, en roept de   noemen we auditie, door tijdens de traversedf (call - back -).  ,, stap 2 (beëindiging), 3 (beroep) en 4 (naar aanpassing) herhalen totdat we gebruikmaken van een boom, een knooppunt.  , is een zeer moeilijk onderwerp, het hele artikel volledig uit de terugkerende eisen van het onderwijs.Als gevolg van de terugkerende verklaart ook niet aandacht gericht is op de tenuitvoerlegging van tree-i zou geen lezers niet goed herhaling van de twee dingen doen. Ten eerste, wij zijn hier.,, de uitvoering van de   experiment, traversedf (call - back -),   proberen te begrijpen dat een deel van de  , hoe Het werkt.Ten tweede, als je wilt dat ik een artikel schrijf, dan in de opmerkingen van terugkerende, alsjeblieft.,, de volgende is een voorbeeld van hoe   boom, traversedf (call - back -).Ling   boom, en ik zal tot een in het voorbeeld hieronder.Ik zou op dit moment gebruikte methode is niet ideaal, maar het werkt.Een betere aanpak aan te gebruiken, voeg (Value), die wij zullen uitvoeren, in stap 4 of 5.  , var = nieuwe boom, boom ('); tree._root.children.push (nieuwe module (twee)); tree._root.children[0].parent = boom; tree._root.children.push (nieuwe module ("drie"); tree._root.children[1].parent = tree._root.children.push (nieuwe boom. - ('four')); tree._root.children[2].parent = boom; tree._root.children[0].children.push (nieuwe module ('five')); tree._root.children[0].children[0].parent = tree._root.children[0]; tree._root.children[0].children.push (nieuwe module ('six')); tree._root.children[0].children[1].parent = tree._root.children[0]; tree._root.children[2].Children.push (nieuwe module ('seven')); tree._root.children[2].children[0].parent = tree._root.cKinderen [2]; het creëren van een net * deze boom... Twee, vijf, └ met... Met... Zes... Drie... Vier... └ └ zeven * /, en nu, laten we bidden, traversedf (terug),,,, boom. Traversedf (functie (module) {de console log (module. De gegevens)}); /* log de volgende reeks op de console van de "vijf" zes "" "" "" drie "zeven" vier "" "* * * * * * * /2,,,,,,, 5:traversebf (terug), het gebruik van bfs zoeken die een De boom.  , diepte doorzocht, en het verschil tussen de volgorde van de boom te zoeken die betrekking heeft op de toegang tot de knooppunten.Om dit te illustreren, laten we met onze boom, traversedf (terug),,,, /* boom (diep: 0)... (met twee diepe: 1)..., met vijf (diep: 2), van └... Zes (diep: 2) met drie (diepte... (1) └: 4 - diepte: 1) 7 (└... Diep: 2) * /, en nu, laat ons door, traversebf (call - back -), we gebruiken dezelfde terugbellen, traversedf (call - back -).  ,, boom. Traversebf (functie (module) {console logboek (module. De gegevens)}); * log de volgende reeks in de besturing van een "drie" vier "vijf" zes "," zeven "* * * * * * * /, het logboek van de console en onze boom blijkt een bfs zoeken naar patronen.Begin bij de wortel, van links naar rechts, links en rechts van de diepte van de toegang tot elk knooppunt.Herhaal deze procedure tot de diepte van het toerisme, niet meer.  , want we hebben een breedte van de conceptuele model zoeken we nu, de uitvoering van de code, die ons voorbeeld.  ,, tree.prototype.traversebf = functie (call - back -) {VAR = nieuwe rij, rij, rij) (het _root. Rij.); currenttree = rij. Dequeue (); en (currenttree (VAR) {voor i = 0, lengte = currenttree.children.length; ik < lengte; I + +) (rij. Rij (currenttree. Kinderen [M]);} call - back - (currenttree); currenttree = rij. Dequeue ();}}; wat de definitie van,,, traversebf (terug), bevat een groot aantal logica.Dus, ik zal het uitleggen in stappen van de   logica:,, het creëren van een voorbeeld, rij, toevoegen van knooppunten, noemen, traversebf (call - back -), naar voorbeeld van de verklaring, rij.  , een variabele van de nomenclatuur, CurrentNode en gestart, node, we zeiden alleen dat we In de rij staan.  , en CurrentNode, wijst in de richting van een knooppunt van de uitvoering van de code in, en de circulaire.  , het gebruik, de cyclus die kinderen, CurrentNode in het lichaam van de cyclus,,,,, en elk kind in de rij staan.  , band, CurrentNode, en beschouwt het als een parameter, call - back -  , toegewezen aan de knopen. En CurrentNode, worden verwijderd uit de rij.   tot CurrentNode, wijst niet op een knooppunt in de boom elke toegang tot de herhaalde stappen 4 tot en met 8. 3, 5, met inbegrip van:,, -Lback doorkruisen),,,,, dat de definitie van een methode, kunnen we de boom vinden we een bepaalde waarde.Het gebruik van onze boom, ik   (call - back - definitie, bevat, die,  ) aanvaarding van twee parameters: de gegevens   zoeken en die vormen.  ,, tree.prototype.contains = functie (call - back - doorkruisen) {doorkruisen. Telefoon (het call - back -);};,, in   lichaam, bevat (call - back -, we doorkruisen), met behulp van een methode die door de,, genaamd,,,, -.De eerste   parameters gebonden aan de boom, die     noemen, met inbegrip van (call - back -, door de  ); tweede parameter is een functie in de boom, we bellen elke module.  , om in te loggen in de console, stel je voor dat we een knooppunt van de vreemde gegevens bevat,   door elk van knooppunten in de boom bfs.Dit is de code kunnen schrijven:,, ///////boom is een root - voorbeeld van een boom. Bevat (functie (module) {als (node.data = = = 2) {console logboek (module);}}, boom. Traversebf);,,, 4, 5: toevoeging van de gegevens (gegevens, die),,,,, hebben we nu zoeken we een boom van een specifieke module voor.Laten we nu de definitie van een kan ons op bepaalde punten nog een gezamenlijke aanpak. ,, tree.prototype.add = functie (data, die kinderen) {VAR = nieuwe module (gegevens), de moeder = nul, call - back - = functie (module) {als (node.data = = = = - gegevens) {'}}; dit omvat; (call - back -, die als (') {'); de ouders van de kinderen (kinderen duwen..); child.parent = ouders;} {andere nieuwe fouten ('cannot toevoegen - naar een niet - bestaande ouders. ");}};,,, (de gegevens toe te voegen, die  ), de definitie van drie parameters.Het eerste argument, gegevens, worden gebruikt voor het creëren van een nieuw voorbeeld knooppunten.Het tweede argument voor het vergelijken van gegevens, de in een boom van elke module.De derde parameter is de boom, die, in de methode gebruiken.  , in   lichaam, toe te voegen (gegevens, die in onze verklaring), drie variabelen.De eerste variabele gestart, kinderen, als voorbeeld van een nieuwe  , knoop.Tweede variabele gestart voor de moeder,,, lege,; maar het zal later in een boom met een gezamenlijke waarde van gegevens.Mobiliseren, ouders, in de drie variabelen in onze verklaring, het is terug.  ,,, call - back -, is een vergelijking van gegevens, en elk knooppunt van gegevens, de capaciteit.Als, als, de evaluatie van de verklaring, echt, dan, ouders, is toegewezen aan de gezamenlijke komt overeen met de in de verklaring van   als,,. Elke node, feitelijke gegevens,   plaatsvindt in de  , met inbegrip van (call - back - doorkruisen).Die  , call - back - type, moet als een argument  , met inbegrip van (call - back -, die,  ).,, en tot slot, als ouders, niet in een boom, bestaan we duwen, kinderen, ouders, kinderen, we zijn toegewezen.;, ouders, als moeder, kinderen.Anders, we gooien een  .  , laten we  , gebruik, ADD (data, toData, traversal),   in een post  , boom, var = nieuwe boom ('CEO'); tree.add ('VP van Happiness','CEO', tree.traverseBF); * onze boom'CEO'└...'VP van Happiness'*, hier is. Een meer complex voorbeeld van  , voeg (addData, toData, traversal):  , var, boom = nieuwe boom ('CEO'); tree.add ('VP van Happiness','CEO', tree.traverseBF); tree.add ('VP van Finance','CEO', tree.traverseBF); tree.add ('VP van Sadness','CEO', tree.add (tree.traverseBF);'Director van Puppies','VP van Finance', tree.traverseBF); tree.add ('Manager van Puppies','Director van Puppies', tree.traverseBF);'CEO'* boom met...'VP van Happiness'net...'VP van Finance','Directo met...O, └ puppy 's... De manager van puppy' s... "└ VP verdriet * /5, 5:,,, geschrapt (data, door),,,, voor de voltooiing van de uitvoering van ons, boom, zullen wij nog een manier om de  , te schrappen (data, door),.Soortgelijke   verwijderen van een knooppunt van de DOM, deze methode kan het schrappen van een knooppunt en al zijn kinderen. Tree.prototype.remove = functie (,, gegevens, door de) {var. = = = = = = = leeg, moeder, childtoremove = nul, index; var call - back - = functie (module) {als (node.data = = = = = = = = de moeder van de gegevens) (= knooppunten;}}; dit omvat (call - back - Traversa); als (') {- index = findindex (parent.children, gegevens); in het geval van (index = = = niet) {gooi nieuwe fouten ('node geschrapt bestaan niet. "); childtoremove = {} tenzij de ouders van kinderen van verschillende (.. (1);}} {andere nieuwe fouten ('parent bestaat niet");} terug childtoremove;};,, vergelijkbaar met de   toe te voegen (gegevens, die door de bomen), onderzoeken, het schrappen van een module bevat het tweede argument,   uit, nu.Als de knoop gevonden, dus, ouders, punt.  ,, op het moment dat we bij onze eerste, als de verklaring.Als vader, niet bestaan, en we gooien een fout.Als de ouders bestaan, we bellen, findindex (), parent.children, moeten wij van de kinderen - verwijderen van gegevens, moeder.(en findindex (), is een van de methoden, ik als volgt gedefinieerd.), de functie, findindex (ARR, gegevens) {VAR - index; (VAR i = 0; ik < arr.length; I + +) {als (ARR [M] = = = = = = = = = = = = =. Gegevens van de gegevens) (index = m;}} return index;}, binnen  , findindex (), de volgende logische gebeuren.Als een knooppunt, parent.children overeenkomen met de gegevens, met inbegrip van gegevens, indicatoren, variabelen, de toewijzing van een geheel getal.Als er geen gegevens voor de eigenschappen van de kinderen met de gegevens, zo, registers, het behoud van de standaardwaarden, is niet vastgesteld.In de laatste regel van findindex (), gaan we terug, index.  ,, gaan we nu terug, te schrappen (data, die).Als, registers, is niet gedefinieerd, fouten worden gegooid.Als de index wordt gedefinieerd, we gebruiken het om de knopen te schrappen van onze kinderen, ouders, kinderen, we worden geschrapt; childtoremove,.  , en, ten slotte, gaan we terug. Childtoremove,.  , een boom, een volledige uitvoering van de boom, we bereiken, is volledig.Kijken of we veel hebben bereikt:  , functie, knooppunten (gegevens) {this.data = gegevens; this.parent = nul; this.children = [...];} functie van de boom (gegevens) {VAR (= nieuwe module (gegevens); dit. _root = knooppunten;} tree.prototype.traversedf = functie (call - back -) {///////- dit is een herhaling van de functie (recursief (onmiddellijk stappen CurrentNode) {///////2 (VAR i = 0, lengte = currentnode.children.length; ik < lengte; I + +) (///////3 recursief (CurrentNode. Kinderen [M]); ///////call - back - (stap 4) CurrentNode); /stap 1}) (_root dit.);}; tree.prototype.traversebf = functie (call - back -) {VAR rij = nieuwe queue ();Rij. Rij (dit. _root); currenttree = rij. Dequeue (); en (currenttree (VAR) {voor i = 0, lengte = currenttree.children.length; ik < lengte; I + +) (rij. Rij (currenttree. Kinderen [M]);} call - back - (currenttree); currenttree = rij. Dequeue ();}}; tree.prototype.contains = functie (call - back - doorkruisen) {doorkruisen. Telefoon (het call - back -);}; tree.prototype.add = functie (data, die kinderen) {VAR = nieuwe module (gegevens), de moeder = nul, call - back - = functie (module) {als (node.data = = = = = = = = gegevens) {moeder = knooppunten;}}; dit omvat (call - back -, die als (') ();De ouders van de kinderen (kinderen).. duwen; child.parent = ouders;} {andere nieuwe fouten ('cannot toevoegen - naar een niet - bestaande ouders. ");}}; tree.prototype.remove = functie (gegevens, door de) {var. = = = = = = = leeg, moeder, childtoremove = nul, een nummer. De var - call - back - = functie (module) {als (node.data = = = = - gegevens) {'}}; dit omvat; (call - back - doorkruisen); als (') {- index = findindex (parent.children, gegevens); in het geval van (index = = = niet) {gooi nieuwe fouten ('node schrappen wat niet bestaat."); childtoremove = {} of ouders. Kinderen. Aansluiting (indexcijfer 1);}} {andere nieuwe fouten ('parent bestaan niet. ");} terug childtoremove;}; de functionele findindex (ARR, gegevens) {VAR - index; (VAR i = 0; ik < arr.length; I + +) {als (ARR [M] = = = = = = = = = = = = =. Gegevens van de gegevens (index) = ik;}} return index;},, conclusies   gestratificeerde gegevens, de bomen, de simulatie.De wereld om ons heen veel lijkt op die van de hiërarchische structuur van aard, zoals webpagina 's en onze familie.Wanneer je in de structurele gegevens en de vereiste niveau, als een boom.  ,,

Final product image



Previous:
Next Page: