Concetti Chiave
- La funzione stampaStrada() accetta un albero binario di ricerca e una stringa come parametri.
- Se la stringa corrisponde al valore del nodo radice, viene stampato "radice".
- Per ogni movimento verso sinistra o destra, vengono utilizzate le lettere 'L' e 'R' per indicare il percorso.
- Se il nodo cercato non esiste, viene visualizzato il messaggio "nodo non trovato".
- È necessario implementare una funzione di ricerca per verificare l'esistenza del nodo nell'albero.
Scrivere una funzione C++ di nome stampaStrada() che riceva come argomenti il puntatore ad un albero binario di ricerca ed una stringa str, e stampi la sequenza di mosse (L = left, R = right) da effettuare dalla radice dell’albero per raggiungere il nodo di valore str. Se il nodo coincide con la radice dell’albero viene stampato il messaggio “radice”, se invece il nodo non esiste, viene stampato il messaggio “nodo non trovato”.
In rifermento alla struttura dati albero binario:
void stampaStrada(.....,.....)
{ elem *
start=NULL; //puntatore alla lista dei passi
elem *temp; //puntatore di scansione
if(!(trovato(.....,.....,.....))) //Per la lista usa il passaggio by reference
{
coutNodo non trovato”
} else if( ..... )
{
coutRadice"
} else //stampa gli elementi della lista
.....
}
int trovato(.....,.....,.....)
{
.....
}
Descrizione della funzione
La funzione trovato() ha il compito di costruire la lista dei passi (‘L’ o ‘R’) da percorrere per trovare il nodo con valore str. Essa può essere formulata in modo ricorsivo notando che:
- se l’albero è vuoto, si deve restituire 0;
- se il nodo con valore str corrisponde alla radice si deve restituire 1, senza inserire elementi in lista;
- se il nodo viene trovato nel sottoalbero sinistro (mediante chiamata ricorsiva), si deve creare un elemento con valore ‘L’ ed inserirlo nella lista;
- se il nodo viene trovato nel sottoalbero destro (mediante chiamata ricorsiva), si deve creare un elemento con valore ‘R’ ed inserirlo nella lista;
- se il nodo non viene trovato nei sottoalberi sinistro e destro, si deve restituire 0.
STRUTTURA ALBERO BINARIO
struct elem{
elem*left;
elem*right;
char str[20];
}
Domande da interrogazione
- Qual è lo scopo della funzione `stampaStrada()` nel contesto di un albero binario di ricerca?
- Come viene gestito il caso in cui il nodo cercato coincide con la radice dell'albero?
- Cosa succede se il nodo specificato non esiste nell'albero binario di ricerca?
La funzione `stampaStrada()` ha lo scopo di determinare e stampare la sequenza di mosse necessarie per raggiungere un nodo specifico in un albero binario di ricerca, partendo dalla radice. Se il nodo è la radice, stampa "radice", mentre se il nodo non esiste, stampa "nodo non trovato".
Se il nodo cercato coincide con la radice dell'albero, la funzione `stampaStrada()` stampa il messaggio "radice", indicando che non sono necessarie ulteriori mosse per raggiungere il nodo desiderato.
Se il nodo specificato non esiste nell'albero binario di ricerca, la funzione `stampaStrada()` stampa il messaggio "nodo non trovato", segnalando che il nodo non è presente nella struttura dati.