Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Costruire copia di un albero [Es 1 Eserciziario d'Esame]

G
Giordano_Dionisi (3100 points)
16 41 59
in Eserciziario d'esame by (3.1k points)

salve  a tutti ragazzi,

Ho un problema enorme che non riesco a risolvere:

Se io ho un albero binario così definito:

class AlberoBinario:
    def __init__(self, V, sx=None, dx=None):
        self.valore = V
        self.sx = sx
        self.dx = dx

Come faccio a crearne uno identico spiccicato senza far si che diventi lo stesso albero (non voglio copiare gli indirizzi di memoria, ma solo i valori e la struttura)

Ho provato in tutti i modi, anche con t3 = albero.AlberoBinario(t1.valore, t1.sx, t2.dx) ed in questo modo i riferimenti sono diversi, ma sono uguali quelli dei sotto-alberi... Non so proprio come fare sad

P.S.: Ovviamente non posso usare il deepcopy di copy, essendo una libreria esterna

2 Answers

Romitoskj (8920 points)
5 8 40
by (8.9k points)
Dovresti farlo in maniera ricorsiva per ogni nodo. Così hai copiato il valore della radice e i riferimenti dei figli, invece dovresti copiare il valore e poi andare in ricorsione sui figli.
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
Ancora meglio:

- prima vai di ricorsione sui figli

- poi crei il babbo
Romitoskj (8920 points)
5 8 40
by (8.9k points)

Vero, molto probabilmente l'avrei fatto così ma nello scrivere ho invertito i passaggisad

andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
@r.bani non condividere il codice
r
r.bani (1250 points)
0 0 3
by (1.3k points)
scusi prof non credevo fosse un problema.