Ciao ragazzi,
ho qualche dubbio per l'esame di algoritmi...c'è un esercizio dove chiede di scrivere in pseudo codice (nessun linguaggio specifico quindi...ditemi solo se lalogica può essere corretta) una procedura ricorsiva che verfichi se esiste un nodo dell'albero che abbia un certo contenuto informativo (identficato da una chiave k)
io l'ho pensato così:
codice:
CercaElemento(nodo r, chiave k){
IF(r == null) THEN return null // Caso base 1: gli stò passando un albero vuoto
IF(chiave(r) == k) THEN return k // Caso base 2: ho trovato l'elemento che cerco
ELSE // Caso generale
CercaElemento(nodo figlio sinistro di r, chiave k)
CercaElemento(nodo figlio destro di r, chiave k)
}
Così facendo se gli passo un albero vuoto ritorna null al chiamante il che può succedere se l'albero di partenza è vuoto o se raggiunge una foglia: torna indietro restituendo null e se alla fine non ha trovato nulla la funzione dovrebbe restituire proprio null al chiamante di partenza.
Se invece trova l'elemento lo ritorna al chiamante altrimenti scende prima sul sottoalbero sinistro e poi sul sottoalbero destro effettaundo la ricerca.
Pensate che possa andare bene? la soluzione del professore è un po' diversa...ho sbagliato qjualcosa?
Grazie
Andrea