Esercizio 16alberi binari di ricerca, inserimenti e visita inorder
In questa pagina 5
Testo (scritti del 30/01/2026 e del 07/08/2026, parte 1).
- Si consideri un Binary Search Tree (BST) inizialmente vuoto. Si inseriscono, nell'ordine dato, le chiavi . (a) Disegnare l'albero risultante. (b) Indicare l'ordine in cui vengono visitati i nodi eseguendo una visita
inOrder. - Si consideri un albero binario di ricerca inizialmente vuoto. Si inseriscono nell'ordine le chiavi . (a) Disegnare l'albero ottenuto dopo tutti gli inserimenti. (b) Scrivere la sequenza di chiavi visitata da una visita in-order. (c) Qual è la complessità al caso pessimo dell'operazione di ricerca in un albero binario di ricerca con nodi? Motivare brevemente.
Richiami
Inserimento (vedi Alberi binari di ricercaAlbero binario di ricerca come albero binario proprio con entry nei nodi interni e foglie vuote; inorder crescente; TreeSearch; get, put e remove (due casi, con predecessore inorder) in Theta(h); altezza fino a n-1; esempi di inserimenti; alberi aumentati con campi size e max e algoritmi di conteggio e interrogazione in O(h).Alberi binari di ricerca →): si parte dalla radice; si va a sinistra se la chiave è minore di quella del nodo, a destra se è maggiore, fino a trovare un posto vuoto (una foglia esterna), dove si crea il nodo. La visita in-order visita sinistra, nodo, destra e restituisce le chiavi in ordine crescente.
1. Chiavi
- : radice.
- : figlio sinistro di .
- : figlio destro di .
- , : figlio sinistro di .
- , : figlio destro di .
- , : figlio sinistro di .
- , : figlio destro di .
7
/ \
3 10
/ \ / \
1 5 9 12(b) In-order: (ordine crescente, come sempre). L'albero è perfetto (tutti i livelli pieni): altezza con nodi.
2. Chiavi
- : radice.
- : figlio sinistro di .
- : figlio destro di .
- , : figlio destro di .
- , : figlio sinistro di .
- , : figlio destro di .
- , , : figlio sinistro di .
5
/ \
2 8
\ / \
4 7 9
/
3(b) In-order: . L'altezza è (cammino ).
(c) Complessità al caso pessimo della ricerca. La ricerca segue un unico cammino dalla radice, con un numero costante di operazioni per nodo: costa , con altezza dell'albero. Nel caso pessimo l'albero degenera in una catena (ad esempio le chiavi inserite in ordine crescente) e : la ricerca costa , quindi e per quell'istanza. In un albero bilanciato sarebbe (vedi Multi-way search tree e alberi (2,4)Multi-way search tree (nodi con più entry, d figli e d-1 chiavi ordinate), ricerca in O(d_max h), un MWS tree con n entry ha n+1 foglie; albero (2,4): nodi con 2-4 figli e tutte le foglie alla stessa profondità, altezza Theta(log n) con dimostrazione, operazioni in Theta(log n); idea di overflow e underflow; tabella di confronto con gli alberi binari di ricerca.Multi-way search tree e alberi (2,4) → per strutture con altezza logaritmica garantita).
Osservazione
Lo stesso insieme di chiavi dà alberi diversi a seconda dell'ordine di inserimento: le chiavi del punto 1 inserite come danno una catena di altezza invece di . Ciò che non cambia è la visita in-order, sempre crescente. (Alberi e visite verificati con un'implementazione.)
Errori comuni
- Dimenticare che l'albero dipende dall'ordine di inserimento: ridisegnare l'albero a partire dalle chiavi ordinate è sbagliato.
- Confondere in-order con preorder: il preorder del punto 1 è .
- Dire che la ricerca è sempre : lo è solo se l'albero è bilanciato.
- Confrontare con il figlio sbagliato dopo aver sceso un livello (si confronta sempre con il nodo corrente, non con la radice).
Versione ripasso
Testo. BST vuoto con inserimenti (1) e (2) : disegnare l'albero, dare la visita in-order; (c) complessità al caso pessimo della ricerca.
- Regola (vedi Alberi binari di ricercaAlbero binario di ricerca come albero binario proprio con entry nei nodi interni e foglie vuote; inorder crescente; TreeSearch; get, put e remove (due casi, con predecessore inorder) in Theta(h); altezza fino a n-1; esempi di inserimenti; alberi aumentati con campi size e max e algoritmi di conteggio e interrogazione in O(h).Alberi binari di ricerca →): minore a sinistra, maggiore a destra, fino a un posto vuoto.
- (1) albero perfetto: radice ; figli (, ) e (, ); in-order .
- (2) radice ; sinistra con figlio destro che ha figlio sinistro ; destra con figli e ; in-order , altezza .
- (c) ricerca ; caso pessimo albero a catena, : ; bilanciato .
- Osservazione: lo stesso insieme di chiavi inserito in ordine crescente dà una catena di altezza invece di ; il preorder del punto 1 è .
- Errori: albero indipendente dall'ordine; in-order e preorder scambiati; ricerca sempre .