Hoe maak je een binaire boom in C

Binaire bomen in C zijn een goede manier om dynamisch het ordenen van gegevens voor het gemakkelijke zoeken. Ze vereisen echter een heleboel werk te handhaven.

De binaire boom maken

  • Structuur uw binaire boom. Elke binaire boom moet een structuur, zelfs als er slechts één variabele. Kies een naam en gebruik vervolgens typedef te maken:

     typedef struct student_data STUDENT_DATA; 
  • Definiëren de structuur. Omvatten twee pointers naar dezelfde structuur:

     struct student_data { int student_ID; int student_grade; STUDENT_DATA left, right;}; 
  • Het toewijzen van een pointer naar deze gegevensstructuur, initialiseren op NULL, hoofd van de boom:

     STUDENT_DATA *students = NULL; 

Toevoegen aan de binaire boom

  • Twee tijdelijke verwijzingen naar de gegevensstructuur toewijzen:

     STUDENT_DATA new_student, cur_student; 
  • Malloc () gebruiken om een nieuw element, altijd controleren op een fout te maken:

     if ((new_student = malloc(sizeof(STUDENT_DATA))) == NULL) { abort(); } 
  • Het nieuwe element velden worden gevuld. De links en de juiste velden instellen op NULL:

     new_student->student_ID = newID;new_student->student_size = newsize;new_student->left = NULL;new_student->right = NULL; 
  • Overwegen de hoofd variabele. Als de hoofd variabele NULL is, dit is het eerste element toegevoegd aan de boom, ingesteld dus de hoofd variabele daarnaar verwijzen, en je bent klaar:

     if (!students) { students = new_student; return; } 
  • Beginnen bij de top van de boom:

     cur_student = students;while (cur_student) { 
  • De dubbele post verwerken als de nieuwe waarde en de huidige waarde gelijk zijn:

     if (newID == cur_student->student_ID) { abort(); } 
  • Omgaan met ongelijke waarden. Als de nieuwe waarde lager dan de huidige waarde is, gaat het nieuwe element aan de linkerkant. Voeg het meteen als er niets aan de linkerkant. Anders, traverse links en loop:

     if (newID < cur_student->student_ID) { if (cur_student->left == NULL) { cur_student->left = newstudent; return 1; } cur_student = cur_student->left; 
  • Het zelfde ding aan de rechterkant, anders doen:

     } else { if (cur_student->right == NULL) { cur_student->right = newstudent; return 1; } cur_student = cur_student->right; }} 

De binaire boom zoeken

  • Maak een tijdelijke variabele die verwijst naar de gegevensstructuur:

     STUDENT_DATA *cur_student; 
  • Uw tijdelijke variabele instellen op de hoofd variabele:

     cur_student = students_head; 
  • Doorlopen van de elementen, controleren op de gewenste waarde:

     while (cur_student) { if (cur_student->student_ID == 15) { return cur_student->student_grade; } 
  • Branch links of rechts, en loop, als het niet wordt gevonden:

     if (cur_student->student_ID < 15) { cur_student = cur_student->right; } else { cur_student = cur_student->left; } 
  • Zie als de lus eindigt. Als dat zo is, betekent dit dat u nooit het item gevonden:

     }return 0; 

Schoon te maken

  • Deallocate de binaire boom wanneer uw programma wordt beëindigd, aangezien niet alle besturingssystemen dit automatisch behandelen zal. Dit is het beste gedaan met behulp van een recursieve functie:

     void deallocate_binary_tree(STUDENT_DATA *tree) { 
  • In acht nemen: Als er geen enigen boom, er is niets te doen:

     if (!tree) return; 
  • De linker en rechter substructuren recursief deallocate:

     deallocate_binary_tree(tree->left); deallocate_binary_tree(tree->right); 
  • Het nummer van het element, en je bent klaar:

     free(tree);} 
Tips & waarschuwingen
  • Zoeken en toevoegen aan binaire bomen kan ook worden gedaan met behulp van recursie. Dit is veel makkelijker om te schrijven en te onderhouden, maar een beetje moeilijker te begrijpen, totdat u aan het went.
  • Het is gebruikelijk om het maken van een binaire boom die alleen verwijzingen naar een tweede C-gegevensstructuur, vaak een matrix of een gelinkte lijst bevat, waarin de feitelijke gegevens zich bevindt. Elke binaire boom is een index van snel zoeken een enkel veld van de gegevens in de lijst.
  • Verwijderen van een binaire boom is een zeer ingewikkeld algoritme in C, maar in vele toepassingen van binaire bomen, elementen worden nooit verwijderd.

Gerelateerde Artikelen

Hoe maak je een Lollipop-boom

Hoe maak je een Lollipop-boom

Hoe maak je een Lollipop-boom. Als u op zoek bent voor een uniek middelpunt voor een feest of iets anders voor een tabel in uw huis, probeert Lollipop bomen. Lollipop bomen zijn zeker een fan favoriet van al uw gasten. Ze zijn een eenvoudige, kleurri
Hoe maak je een takje boom

Hoe maak je een takje boom

Een takje boom maakt een mooie decoratie voor seizoensgebonden feestdagen zoals Halloween of Pasen en ze zijn makkelijk te maken. Elke grootte boom je wilt kun je in verschillende vormen zoals volledige vertakt of krom. Maak een takje boom weergeven
Hoe maak je een enorme boom van papier

Hoe maak je een enorme boom van papier

Vieren de wisseling van de seizoenen door het creëren van een enorme boom gemaakt van papier. Ambachtelijke de kofferbak van bruin slager papieren of Kraft papier. Dan, voeg verschillende seizoensgebonden elementen elke maand om aan te tonen hoe de b
Hoe maak je een zeshoek boom bankje

Hoe maak je een zeshoek boom bankje

Zeshoek boom bankjes toevoegen zowel de schoonheid als de functie aan een outdoor leefruimte. Deze banken wikkel helemaal rond de boom, zitplaatsen en een plek om te genieten van de schaduw van de boom. De Bank helpt ook controle erosie van boomworte
Hoe maak je een besluit boom met Visio

Hoe maak je een besluit boom met Visio

Microsoft Visio is een toepassing die gebruikers toestaat om het maken van verschillende soorten diagrammen met behulp van verschillende aansluitende vormen evenals tabellen, grafieken, kaarten en stroomdiagrammen. Een type stroomdiagram dat vaak wor
Hoe maak je een wens boom

Hoe maak je een wens boom

Wishing bomen zijn een onderdeel van vele culturen voor honderden jaren. De Chinese toss sinaasappelen geknoopt met rode en gouden papier in bomen en Turkse inboorlingen binden witte stroken papier met wensen op hen aan de takken. Auteur Mary Redman
Hoe maak je een Hall boom uit een deur

Hoe maak je een Hall boom uit een deur

Een boom van de hal biedt een handige plek om te hangen jassen en hoeden in de hal of een hal van een woning. Veel hall bomen hebben ook spiegels, zodat u controleren kunt uw verschijning en een bank die kunt u op te trekken op laarzen zitten. In pla
Hoe maak je een Halloween Boom

Hoe maak je een Halloween Boom

Dit jaar verder gaan dan de kom van snoep en huidige Halloween behandelt op een spooky boom. Volledig gekleed, maken ze een geweldige gastvrouw gave, dessert buffet prop of cadeau voor de pauze van de kantoorruimte.Wat die u nodig hebtMiniatuur spoke
Hoe maak je een jas-boom

Hoe maak je een jas-boom

Jas bomen zijn een eeuwenoude antwoord op het probleem van het moeten een plek om te hangen jassen, jassen en hoeden. Hier kun je een jas boom voor veel minder dan de kosten van het kopen van een. U kunt het uitvoeren van het project in ongeveer een
Hoe maak je een Avocado boom Bear Fruit

Hoe maak je een Avocado boom Bear Fruit

De boomstructuur van een avocado (Persea americana) bereikbaar 80 voet zich lang met 4 - tot 8-inch glanzend groenblijvende bladeren, maar meestal blijft korter en groeit in de U.S. Department of Agriculture fabriek hardvochtigheid zones 9 t/m 11. Cl
Hoe maak je een Guava boom Bear Fruit

Hoe maak je een Guava boom Bear Fruit

Guaves zijn smaakvolle tropische vruchten die op een kleine boom met karakteristieke koper gekleurde schors die Pelt groeien af in krullen. De vrucht heeft een rijke penetrante geur wanneer rijp en is geel en zacht gebloste, ovale, ronde of pear gevo
Hoe maak je een Factor boom in 5 eenvoudige stappen

Hoe maak je een Factor boom in 5 eenvoudige stappen

Factor bomen zijn nuttige hulpmiddelen waarmee de grafiek van de nummers door die een groter getal deelbaar is. Wanneer u klaar bent met een factor-boom, moet u zitten kundig voor vermenigvuldigen van alle factoren en komen met uw originele nummer. D
Hoe maak je een verlichte boom van de fles

Hoe maak je een verlichte boom van de fles

Maakt een eigenzinnige accent voor uw erf of tuin door het maken van een verlichte boom van de fles. Een oude zuidelijke traditie houdt die blauwe flessen opknoping op de bomen in de voortuin weren boze geesten. Hangen alle kleuren van de fles die je
Hoe maak je een papier boom voor een klas

Hoe maak je een papier boom voor een klas

Een papier-boom kan uitgroeien tot een aantrekkelijke plek voor kinderen om te genieten in een klaslokaal omgeving. Afhankelijk van de afgewerkte resultaten die u wenst, u kan de boom maken voor uw klas of nodigen de kinderen deel te nemen aan het pr