La mia domanda è semplice come dice il titolo - dovrei implementare AST con il genitore o no?
Attualmente l'ho implementato con il genitore - il vantaggio di questo approccio è che, qualunque cosa io usi, posso andare su o giù senza problemi, tutto ciò di cui ho bisogno è un nodo. E anche le modifiche all'albero sono facili, perché sono locali per un determinato ramo.
Tuttavia ... quando guardo i profili, vedo che oltre il 40% del tempo viene speso per la clonazione dei nodi. Il clone è necessario, perché con il genitore non posso associare il nodo dato a più genitori.
L'opposto - nessun genitore - eliminerebbe la necessità di clonazione (almeno un uso così pesante), l'albero sarebbe più compatto (in realtà non sarebbe più albero, a causa dei nodi condivisi), ma forzerebbe Io uso una classe di navigatore gentile per tenere traccia dei nodi quando li attraverso, e aggiungerò un po 'di peso alla modifica dei rami (prima dovrei fare un clone locale :-) e poi modificarlo).
È difficile per me stimare quale approccio è migliore. Oh bene, forse c'è un terzo modo? Grazie in anticipo per l'aiuto.