esame 29-1-20 esercizio 5

C
C.Calamia (720 points)
5 16 25
asked Jan 3, 2021 in Info su corso ed esami by C.Calamia (720 points)
recategorized Jan 4, 2021 by andrea.sterbini
Salve a tutti, ho un problema con l'esercizio 5 ma nello zip dell'esame non ci sono le soluzioni quindi chiedo un parere qui.

Questo è lo zip:

https://q2a.di.uniroma1.it/assets/fondamenti-19-20/esame-29-1-20.zip?v=0

Tralasciando lo scopo dell'esercizio vorrei capire come risolvere questo sottoproblema: devo eliminare le foglie di un albero e restituire la somma delle foglie eliminate. Quello che faccio è :

se il nodo r non ha figli aggiungo l'id di r a un variabile,

faccio un ciclo for in cui scorro i figli di r,

se il figlio corrente non ha figli aggiungo il suo id alla variabile e lo rimuovo dalla lista dei figli di r,

faccio la chiamata ricorsiva sul figlio corrente,

fuori dal for ritorno la variabile.

Facendo così riesco a cancellare molte foglie, ma non tutte. Avete qualche suggerimento da darmi? Grazie.
330 views

1 Answer

Best answer
m
massimocoppola (950 points)
1 15 20
answered Jan 11, 2021 by massimocoppola (950 points)
selected Jan 11, 2021 by C.Calamia
ciao,

io mi sono trovato nella condizione: "lo [la foglia] rimuovo dalla lista dei figli di r"

anche io facevo questa cosa ma credo tu stia iterando direttamente sulla lista di figli di r: quindi modifichi una lista mentre ci iteri sopra (cosa che facevo anche io). il problema è che così facendo la lista si rimpicciolisce e non ti fa la seconda iterazione (avendo a mente l'esempio fornito nell'esercizio).

se questo è il tuo problema, io l'ho risolto creando una copia del valore di r ed una copia dei figli di r. modifico questi durante il ciclo. finito il ciclo r.id= r_id_copia e r.f = r_f_copia.
C
C.Calamia (720 points)
5 16 25
commented Jan 11, 2021 by C.Calamia (720 points)
Ti ringrazio, adesso funziona!
m
massimocoppola (950 points)
1 15 20
commented Jan 11, 2021 by massimocoppola (950 points)
scusami se ti disturbo ma tu riesci a lanciare i test dell'esame da dentro spyder?
andrea.sterbini (172780 points)
513 935 1789
commented Jan 11, 2021 by andrea.sterbini (172,780 points)
ho aggiunto questo tipo degli errori alla guida https://q2a.di.uniroma1.it/20126/guida-errori-difficili-da-individuare