Albero binario di ricerca (Struttura dati)
Un albero binario di ricerca (anche chiamato binary search tree) è un tipo speciale di Albero binario (Struttura dati) che mantiene una relazione d’ordine tra gli elementi: per ogni nodo x, tutti i valori nel suo sottoalbero sinistro sono minori o uguali a x.key, e tutti i valori nel suo sottoalbero destro sono maggiori di x.key.
- Vantaggi:
- Una visita in ordine stampa i nodi in ordine crescente.
- MINIMUM e MAXIMUM sono facili da determinare.
- La ricerca di un elemento è efficiente.
Operazioni su albero binario di ricerca
La complessità dipende dall’altezza dell’albero h, che nel caso peggiore (albero degenere) è O(n) e nel caso migliore/medio (albero bilanciato) è O(log n)):
SEARCH(N, k): Ricorsiva o iterativa. Segue i rami in base al confronto conk. Ω(log n) nel caso migliore, O(n) nel caso peggiore. -INSERT(T, z): Trova la posizione appropriata perzmantenendo la proprietà di ordinamento. Ω(log n) nel caso migliore, O(n) nel caso peggiore.DELETE(T, z): Più complessa a causa del mantenimento dell’ordinamento. Utilizza una proceduraTRANSPLANTper sostituire i nodi. La complessità dipende dalla ricerca del successore. O(h).MINIMUM(T),MAXIMUM(T): Seguono rispettivamente il ramo sinistro estremo e il ramo destro estremo. O(h), quindi O(log n) nel caso migliore.PREDECESSOR(T, k),SUCCESSOR(T, k): Simili alla ricerca, ma cercano il nodo con chiave immediatamente inferiore/superiore. O(h).
Problemi di un albero di ricerca
Le performance possono degradare rispetto a quelle di una Lista concatenata (Struttura dati) se l’albero diventa degenere (es. inserendo elementi già ordinati).