Concetti Chiave
- L'albero binario di ricerca è una struttura dati con un nodo radice e due puntatori per i rami sinistro e destro, ottimizzata per gli algoritmi di ricerca.
- Ogni nodo ha la proprietà che nel sotto-albero sinistro si trovano nodi con valori minori e nel sotto-albero destro nodi con valori superiori.
- La degenerazione dell'albero in una lista compromette l'efficacia degli algoritmi di ricerca, rendendo cruciale il mantenimento dell'equilibrio.
- I nodi figli di un albero binario di ricerca possono essere puntatori a NULL o a nodi fittizi per indicare l'assenza di un nodo figlio.
- La struttura di un nodo in un albero binario di ricerca include un valore intero e due puntatori, uno per il figlio sinistro e uno per il figlio destro.
Che cos'è un albero binario di ricerca (Binary Search Tree)?
Struttura e proprietà dell'albero
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.
Considerazioni sulla complessità
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.
struct node{
int val;
struct node *leftchild;
struct node *rightchild;
}
Domande da interrogazione
- Quali sono le caratteristiche principali di un albero binario di ricerca?
- Perché è importante mantenere l'equilibrio in un albero binario di ricerca?
- Come è strutturato un nodo in un albero binario di ricerca?
Un albero binario di ricerca è una struttura dati con un nodo radice e due puntatori per i rami sinistro e destro. Ogni nodo ha la proprietà che nel sotto-albero sinistro ci sono nodi con valori minori e nel sotto-albero destro nodi con valori superiori (come descritto nel testo).
È fondamentale mantenere l'equilibrio dell'albero per evitare che degeneri in una lista, il che comprometterebbe l'efficacia degli algoritmi di ricerca e annullerebbe i vantaggi di questa struttura dati (come evidenziato nel testo).
Un nodo in un albero binario di ricerca è strutturato con un valore intero e due puntatori, uno per il figlio sinistro e uno per il figlio destro, come mostrato nell'esempio di codice fornito (struttura "struct node").