PDA

View Full Version : [Java] Clonazione profonda alberi


cerza
16-02-2017, 16:21
Salve,
ho un albero con 3 nodi iniziali (a, b, c), dovrei eseguire delle operazioni su ognuno di questi ed aggiungervi a questi gli altri due nodi iniziali clonati. In particolare devo eseguire delle operazioni su "a" e clonare "b" e "c".

La clonazione la faccio in questo modo:
public Object clone() throws CloneNotSupportedException {
Nodo clonedNode = null;
try {
clonedNode = (Nodo) super.clone();


if (this.getFather() != null) {

INodo padreClonato = (INodo) clonedNode.getFather().clone();

clonedNode.setFather(padreClonato);
}

} catch (CloneNotSupportedException e) {
logger.debug("Eccezione nella clonazione " + e);
}
return clonedNode;
}

Praticamente clono dal nodo foglia fino alla radice, senza preoccuparmi delle altre caratteristiche del nodo che non mi serve portare avanti. L'esecuzione delle operazioni sul nodo "a" mi porterà in un nuovo insieme costituito dai nodi (x, b clonato , c clonato) dove x è il risultato di a. Quest'ultima esecuzione viene fatta in modo ricorsivo, ma accade qualcosa di strano perché senza aver eseguito alcuna operazione sul nodo "b", questi ha già figli che non dovrebbe avere.
C'è qualcuno che riesce a darmi una mano a capire dove sbaglio?
Grazie