gaspare.pappalardo1
Ominide
1 min. di lettura
Vota 5 / 5

Concetti Chiave

  • L'albero binario di ricerca è una struttura dati utilizzata per ottimizzare gli algoritmi di ricerca grazie alla sua organizzazione logica.
  • Ogni nodo dell'albero ha un valore tale che i nodi nel sotto-albero sinistro hanno valori minori e quelli nel sotto-albero destro hanno valori maggiori.
  • La struttura di un albero binario di ricerca include un nodo radice con puntatori per rami sinistro e destro; i nodi possono anche puntare a NULL o a nodi fittizi.
  • Se un albero binario di ricerca non è bilanciato, può degenerare in una lista, riducendo l'efficienza della ricerca.
  • L'implementazione standard di un nodo include un valore e puntatori ai figli sinistro e destro, spesso rappresentata in linguaggio C.

Albero binario di ricerca (Binary Search Tree)

L’albero binario di ricerca, in ambito informatico, è un particolare tipo di struttura dati, di solito implementato come ADT (Abstract Data Type).
L’albero binario di ricerca è molto utilizzato in quanto possiede alcune peculiarità che gli permettono di essere particolarmente ottimo con gli algoritmi di ricerca; la sua struttura consiste in un nodo radice (root) con due campi puntatori per un ramo di albero sinistro ed uno destro, ciascun nodo sottostante possiede le stesse caratteristiche; se non bilanciato non è detto che un nodo abbia entrambi i figli, sia destro che sinistro, i nodi figli possono essere puntatori a NULL o in alternativa puntatori ad un nodo fittizio, utilizzato per segnalare che non esiste nodo figlio.
Ciascun nodo dell’albero ha la proprietà che sul sotto-albero sinistro abbia tutti i nodi con valore minore del suo, mentre nel sotto-albero destro abbia tutti i nodi con valore superiore al suo.
Bisogna fare attenzione, per quanto riguarda la complessità degli algoritmi che utilizzano questa struttura dati, che l’albero non degeneri in una lista, altrimenti non si hanno più vantaggi nell’utilizzo di questa struttura dati.

Es.

Struttura dati nodo albero

struct node{
int val;
struct node *leftchild;
struct node *rightchild;
}

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community