PDA

View Full Version : [Java] Cercare e Restituire un Nodo di un Albero


nico88desmo
25-11-2008, 18:17
Un saluto a tutti!
Come da titolo, avrei il seguente problema: restituire il nodo di un Albero una volta trovata l'informazione (suppongo che l'albero non contenga informazioni duplicate).
La mia idea era di scorrere tutto l'albero seguendo una inorder-visit, e una volta trovata l'informazione, restituisco l'intero nodo;
il problema è la realizzazzione; pongo subito il codice da me scritto:

private BTPosition<E> findNode (E v, BTPosition<E> app) {
if (app!=null) {
if (app.element().equals(v))
return app;

appNode = findNode(v, app.getLeft());
appNode = findNode(v, app.getRight());

}
return appNode;
} // end findNode


il metodo funzionerebbe così, soltanto che non vorrei utilizzare la variabile appNode (variabile d'appoggio definita all'interno della classe), anche perchè nel caso provassi a cercare un elemento che non è presente nell'albero, la variabile appNode punterebbe ancora alla ricerca precedente;
La soluzione che avevo in mente consisteva nel dichiarare static la variabile all'interno del metodo, però il compilatore non me lo lascia fare;

Qualcuno mi potrebbe dare qualche dritta su come fare?

Grazie!

sottovento
26-11-2008, 07:24
Il problema non si pone: devi semplicemente ritornare null quando app == null.
Infatti, hai fatto (correttamente) il controllo che app sia diverso da null prima di fare il tuo "dirty job" ;) , ma se e' null non ritorni niente.

Quando fai le due findNode() ricorsive, dovrai infine riportare solo quella diversa da null (se ne esiste una, altrimenti ritorni null). Se entrambe sono diverse da null (i.e. lo stesso valore in nodi diversi) puoi decidere quale dei due ritornare, anche se ho visto che questo caso non ti interessa.

In sostanza: non ti serve nessuna statica. Una semplice variabile locale temporanea e' sufficiente