Come parte privata del file bst.h
Item showItemR(link h)
{
if (h == 0) return nullItem;
else
return h->item;
}
void showandcancelR(link& h, ostream& os)
{
if (h == 0) return;
showandcancelR(h->l, os);
showandcancelR(h->r, os);
if (h < 34) {
return showItemR(h);
}
}
come parte pubblica del file bst.h
Item showItemR(int k) {
return showItemR(head, k);
}
void showandcancelR(link h, ostream& os) {
showandcancelR(head, os);
}
a parte il fatto che non ho ancora affrontato la cancellazione del nodo , devo aver fatto più di un disastro temo.. ho provato a seguire le istruzioni ma devo aver scritto più di un abominio perchè è decisamene lontano dal funzionare. durante il corso ci è stato consigliato di studiare sulle slide e sugli esercizi o temi di esame del corso. scorrendo tutto il materiale ho trovato una funzione che credevo mi potesse aiutare e che cancellava tutti i nodi foglia di un albero che avessero come nodo item avente un codice <23. pensavo che togliendo la condizione dei nodi foglia
h->l == 0 && h->r == 0
mi sarei avvicinata ma modificandola arrivo alla soluzione postata prima..
int contafoglieR(link& h)
{
if (h == 0)
return 0;
if (h->l == 0 && h->r == 0 && h->item.getcodice()<=23)
{
cout << h->item.key() << " ";
return 1;
}
else
return contafoglieR(h->l) + contafoglieR(h->r);
}