Albero binario di ricerca - sequenza
Salve, premetto che la mia è una domanda banalissima... Ho un esercizio in cui mi si danno due sequenze di numeri e mi si dice di voler ricercare un numero tramite un albero binario di ricerca. La mia domanda è: data una sequenza, come si può implementare l'albero di ricerca?
Ad esempio ho questa sequenza: 60, 167, 144, 132, 90, 83, 64, 70, 65, 66, 67.
Da dove devo partire e come devo ragionare?
Vi ringrazio in anticipo.
Ad esempio ho questa sequenza: 60, 167, 144, 132, 90, 83, 64, 70, 65, 66, 67.
Da dove devo partire e come devo ragionare?
Vi ringrazio in anticipo.
Risposte
Data una sequenza ordinata lunga n, puoi vederla come un albero di ricerca con $n$ con i nodi ordinati in base all'ordine con cui accederesti ai valori in una ricerca binaria. La radice si trova quindi in n/2 e i suoi figli in n/4 e 3n/4 e così via. La ricerca nell'albero diventa insomma una ricerca binaria.
Sì, così avevo letto, ma in quel caso, la radice dunque sarebbe 90 con figlio sinistro 167 e figlio destro 70... Il che non soddisfa la proprietà degli alberi binari secondo cui y appartenente al sottoalbero sinistro deve essere minore o al più uguale del nodo padre... Non è così?
Scusa, avevo guardato velocemente il tuo esempio e pensavo che gli elementi fossero ordinati.. Credo che a questo punto il problema richiede semplicemente che tu costruisca il tuo albero aggiungendo un elemento per volta. Oppure puoi ordinarli e utilizzare il metodo che ti ho descritto nel post precedente.