Logo NEXUS

NEXUS didattica

← Torna indietro
Informatica / Lezione Teorico-Pratica

Algoritmi Avanzati su BST

Implementazione ricorsiva delle funzioni di ricerca, cancellazione e problemi critici legati al bilanciamento (Degenerazione).

1. Algoritmo di Ricerca (Search)

La ricerca di un elemento in un BST sfrutta la proprietà d'ordine per dimezzare lo spazio di ricerca a ogni passo, con un meccanismo simile alla ricerca binaria su array.

Node* searchBST(Node* root, int key) { if (root == NULL || root->data == key) return root; if (key < root->data) return searchBST(root->left, key); return searchBST(root->right, key); }

2. Il Problema del Degeneramento (Alberi Sbilanciati)

Se gli elementi vengono inseriti in un BST in ordine già ordinato (es. $10, 20, 30, 40$), l'albero degenera in una struttura puramente lineare (simile a una lista concatenata), portando la complessità temporale delle operazioni da $\mathcal{O}(\log N)$ a $\mathcal{O}(N)$. Per evitare questo problema si utilizzano alberi auto-bilancianti (come gli alberi AVL o Red-Black).

Complessità nel caso peggiore:

Albero perfettamente bilanciato: $\mathcal{O}(\log N)$
Albero degenerato (sbilanciato): $\mathcal{O}(N)$

3. Simulatore Interattivo: Ricerca nel BST

Verifica l'efficienza della ricerca inserendo un valore da individuare all'interno del dataset corrente.

bst-engine@nexus-core:~# Node Lookup Simulator
> Dataset BST attivo: [10, 20, 30, 40, 50, 60, 70]. Inserisci un valore da cercare.