>> Elettronica Tecnologia >  >> Casa intelligente >> Vita intelligente

Come creare un albero binario in C

Come creare un albero binario in C. Gli alberi binari in C sono un buon modo per organizzare dinamicamente i dati per una facile ricerca. Tuttavia, richiedono molto lavoro per essere mantenuti.

Crea l'albero binario

Passaggio 1

Struttura il tuo albero binario. Ogni albero binario avrà bisogno di una struttura, anche se ha solo una variabile. Scegli un nome, quindi usa typedef per crearlo:typedef struct student_data STUDENT_DATA;

Passaggio 2

Definisci la struttura. Includere due puntatori alla stessa struttura:struct student_data { int student_ID; int classe_studente; STUDENT_DATA sinistra, a destra;};

Passaggio 3

Assegna un puntatore a questa struttura dati, inizializzandolo su NULL, in modo che sia la testa dell'albero:STUDENT_DATA *students =NULL;

Aggiungi all'albero binario

Passaggio 1

Assegna due puntatori temporanei alla struttura dei dati:STUDENT_DATA new_student, cur_studente;

Passaggio 2

Usa malloc() per creare un nuovo elemento, controllando sempre la presenza di un errore:if ((new_student =malloc(sizeof(STUDENT_DATA))) ==NULL) { abort(); }

Passaggio 3

Popolare i campi del nuovo elemento. Imposta i suoi campi sinistro e destro su NULL:nuovo_studente->ID_studente =nuovo_ID;nuovo_studente->dimensione_studente =nuovo_dimensione;nuovo_studente->sinistra =NULL;nuovo_studente->destra =NULL;

Passaggio 4

Considera la variabile head. Se la variabile head è NULL, questo è il primo elemento aggiunto all'albero, quindi imposta la variabile head in modo che punti ad essa e il gioco è fatto:if (!students) { student =new_student; Restituzione; }

Passaggio 5

Inizia dalla cima dell'albero:cur_student =studenti;while (cur_student) {

Passaggio 6

Gestisci la voce duplicata se il nuovo valore e il valore corrente sono uguali:if (newID ==cur_student->student_ID) { abort(); }

Passaggio 7

Affronta valori disuguali. Se il nuovo valore è inferiore al valore corrente, il nuovo elemento va a sinistra. Aggiungilo immediatamente se non c'è niente a sinistra. Altrimenti, attraversa a sinistra e in loop:if (newID student_ID) { if (cur_student->left ==NULL) { cur_student->left =newstudent; ritorno 1; } cur_student =cur_student->sinistra;

Passaggio 8

Fai la stessa cosa a destra, altrimenti:} else { if (cur_student->right ==NULL) { cur_student->right =newstudent; ritorno 1; } cur_student =cur_student->destra; }}

Cerca nell'albero binario

Passaggio 1

Crea una variabile temporanea che punta alla struttura dei dati:STUDENT_DATA *cur_student;

Passaggio 2

Imposta la tua variabile temporanea sulla variabile head:cur_student =Students_head;

Passaggio 3

Passa in rassegna gli elementi, controllando il valore desiderato:while (cur_student) { if (cur_student->student_ID ==15) { return cur_student->student_grade; }

Passaggio 4

Ramo a sinistra oa destra e loop, se non viene trovato:if (cur_student->student_ID <15) { cur_student =cur_student->right; } else { cur_student =cur_student->sinistra; }

Passaggio 5

Vedi se il ciclo finisce. Se lo fa, significa che non hai mai trovato l'oggetto:}return 0;

Pulisci

Passaggio 1

Dealloca l'albero binario al termine del programma, poiché non tutti i sistemi operativi lo gestiranno automaticamente. È meglio farlo usando una funzione ricorsiva:void deallocate_binary_tree(STUDENT_DATA *tree) {

Passaggio 2

Osserva:se non c'è nessun albero, non c'è niente da fare:if (!tree) return;

Passaggio 3

Dealloca i sottoalberi sinistro e destro in modo ricorsivo:deallocate_binary_tree(tree->left); deallocate_binary_tree(tree->right);

Passaggio 4

Dealloca l'elemento e il gioco è fatto:free(tree);}

Suggerimento

La ricerca e l'aggiunta ad alberi binari possono essere eseguite anche utilizzando la ricorsione. Sarà molto più facile da scrivere e mantenere, ma un po' più difficile da capire, finché non ci si abitua. È comune creare un albero binario che contenga solo puntatori a una seconda struttura di dati C, spesso una matrice o un elenco collegato, in cui risiedono i dati effettivi. Ogni albero binario è un indice per cercare rapidamente un singolo campo dei dati dell'elenco.

Avviso

L'eliminazione da un albero binario è un algoritmo molto complicato in C, ma in molti usi degli alberi binari gli elementi non vengono mai eliminati.


  1. Come creare un HD DVD
  2. Come creare un account YouTube
  3. Come creare un grafico 3D in Excel
  4. Come creare un account e-mail
  5. Come creare un banner pubblicitario HTML
  6. Come creare un account RocketMail