Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Štruktúra vaše binárny strom . Každý binárny strom bude potrebovať štruktúru , aj keď to má len jednu premennú . Vyberte si meno , potom použiť typedef ju vytvoriť :
typedef struct student_data STUDENT_DATA ;
2Definujte štruktúru . Zahrnúť dva ukazovatele na rovnakej štruktúre :
struct { int student_data student_ID int student_grade ; STUDENT_DATA * vľavo , * právo ; } ;
3Prideliť ukazovateľ na túto štruktúru dát , inicializáciu na NULL , bude stromu hlava :
STUDENT_DATA * študenti = NULL ;
Pridať do binárneho stromu
4Prideliť dva dočasné ukazovatele na dátové štruktúry :
STUDENT_DATA * new_student , * cur_student ;
5Používanie malloc ( ) na vytvorenie nového prvku , vždy kontrola chyby :
if ( ( new_student = malloc ( sizeof ( STUDENT_DATA ) ) ) == NULL ) { abort ( ) ; } Praha 6Vyplnenie polí nového elementu . Nastaviť jeho ľavého a pravého poľa na hodnotu NULL :
new_student - > student_ID = newid , new_student - > student_size = newsize , new_student - > doľava = NULL ; new_student - > right = NULL ;
7Zvážte hlavu variabilný . Je-li premenná hlava je NULL , to je prvý prvok pridaný do stromu , takže nastavte premennú hlavy poukázať na to , a máte hotovo :
if ( studentů! ) { Študenti = new_student ; return ; }
8Začnite v hornej časti stromu :
cur_student = študenti , zatiaľ čo ( cur_student ) {
9zaobchádzajte duplicitné položky, ak je nová hodnota a aktuálna hodnota je rovná :
if ( newid == cur_student - > student_ID ) { abort ( ) ; }
10vysporiadať s nerovným hodnotami . Ak je nová hodnota je nižšia , než je aktuálna hodnota , nový prvok sa vkladá vľavo . Okamžite pridať , ak nič na ľavej strane . V opačnom prípade , Traverse vľavo a slučka :
if ( newid student_ID ) { if ( cur_student - > left == NULL ) { cur_student - > doľava = newstudent , vráti 1 ; } cur_student = cur_student - > left ;
11Vykonajte to isté na pravej strane , inak :
} else { if ( cur_student - > pravý == NULL ) { cur_student - > right = newstudent , vráti 1 ; } cur_student = cur_student - > pravý ; } }
Hľadať v binárny strom
12vytvoriť dočasnú premennú ukazujúci na dátové štruktúry :
STUDENT_DATA * cur_student ;
13Nastavte svoj dočasnú premennú do hlavy premenná:
cur_student = students_head ;
14slučku prvkov , kontrola na požadovanú hodnotu :
while ( cur_student ) { if ( cur_student - > student_ID == 15 ) { return cur_student - > student_grade ; }
15Branch vľavo alebo vpravo a slučky , pokiaľ to nie je nájdené:
if ( cur_student - > student_ID cur_student = cur_student - > pravý ; } else { cur_student = cur_student - > vľavo ; }
16Pozrite sa , či slučka skončí ak tomu tak , znamená to , že ste nikdy nájdené položky : .
} return 0 ;
Clean Up
17. navrátiť binárny strom , keď váš program skončí , pretože nie všetky operačné systémy budú riešiť tento problém automaticky To sa najlepšie vykonáva pomocou rekurzívne funkcie :
void deallocate_binary_tree ( STUDENT_DATA * strom ) {
18dodržiavať : V prípade , že nie je žiadny strom , nič robiť : ( ! strom )
ak return ;
19navrátiť ľavej a pravej podstromy rekurzívne :
deallocate_binary_tree ( tree - > vľavo ) ; deallocate_binary_tree ( strom - > vpravo ) ;
20navrátiť prvok , a máte hotovo :
zadarmo ( strom ) ; }