Een binaire zoekboom is een datastructuur waar gegevens van gegevens , genaamd ' nodes ', hebben verwijzingen naar andere nodes , genaamd " kinderen . " Dit geeft de knooppunten , toen grafiek uit, een vorm die vergelijkbaar is met een stamboom . Nodes ontvangen hun plaats in de structuur op basis van of zij evalueren groter of kleiner dan andere nodes . Resterende kinderen zijn altijd minder dan hun ouders ; recht kinderen altijd more.Binary zoekopdracht bomen zijn belangrijk in de informatica omdat ze kunnen zowel gesorteerd en doorzocht , gemiddeld , in O ( n log n ) tijd . Wat je nodig hebt Compiler Bestaande binaire zoekboom Toon Meer Aanwijzingen 1 Maak een winkel functie die de root- knooppunt ontvangt . Wanneer je om met bomen in de informatica , zal de meest effectieve algoritme bijna altijd recursieve en het opslaan van de boom om een bestand zal geen uitzondering zijn . Hier is een voorbeeld skelet van de recursieve store -functie ( op Java ) . Public void winkel ( Node n ) gooit IOException { ... } Write data 2 op wortelknoop naar bestand. Dit zal " pre -order traversal " ( Root , Links Kind , Right Kind ) gebruiken om door alle knooppunten in de boom , omdat deze methode van traversal zal het makkelijkst aan te brengen in de boom te reconstrueren uit de volgorde van de knooppunten in het bestand . De recursieve functie ziet er nu als volgt uit: public void store ( Node n ) gooit IOException { write ( savefile , n ) ; } Store moet zich met de linker- Kind noemen : public void store ( Node n ) gooit IOException { write ( savefile , n ) ; ; store ( n.left ) } Store moeten zich met de juiste Child bellen : public void store ( Node n ) gooit IOException { write ( savefile , n ) ; store ( n.left ) ; winkel ( n.right ) ; } 3 Dubbelklik controleren of de functie passeert de recursieve checklist . Om stack overflow fouten te voorkomen , altijd controleren of een recursieve functie voldoet aan de volgende voorwaarden : Heeft de functie hebben van een exit staat ? Ja , zolang de boom heeft geen oneindige diepte , uiteindelijk zal een knooppunt dat noch een linker of rechter kind bereiken en zal elke iteratie van de functie exit.Does dichter bij de uitgang staat ? Ja , ervan uitgaande dat de boom is niet cirkelvormig en geen knoop heeft een van zijn eigen voorouders als child.The functie passeert de checklist . 4 Reconstrueer uit het bestand . Wanneer het tijd is om de boom terug te laden uit het bestand , zal je gewoon plaatst elke knoop in de boom als het uit het bestand met behulp van uw standaard inbrengen algoritme wordt geladen . Dit moet beginnen bij de wortel en werkt zijn weg naar beneden met behulp van pre -order traversal , het plaatsen van het nieuwe knooppunt in de eerste lege ruimte waarin het zal passen . Dit moet de boom precies zoals het oorspronkelijk werd gecomponeerd in O ( n log n ) gemiddeld reconstrueren .
|