Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 2, 9 CFU => Topic started by: rox on 29-04-2009, 09:35:39



Title: verificare esistenza del nodo in un albero binario
Post by: rox on 29-04-2009, 09:35:39
ho provato a verificare se esiste un nodo in un albero binario,ma mi restituisce sempre true.in particolare non ho capito come fare il metodo esiste (quello che restituisce un boolean).
Code:
public NodoAlberoInt  esiste(NodoAlberoInt t,int i)throws Exception
{
if (isEmpty())
throw new Exception("l'albero รจ vuoto!!");
if(t.getEtichetta()!=i)
{
esiste(t.getLeft(),i);
esiste(t.getRight(),i);
return (t);
}
if(t==null)
throw new Exception("il nodo cercato non esiste!");
else return t;


}
public boolean esiste(int i)throws Exception
{
NodoAlberoInt t=new NodoAlberoInt(i);
return i==esiste(t,i).getEtichetta();
}
grazie in anticipo per le eventuali risposte.


Title: Re:verificare esistenza del nodo in un albero binario
Post by: poty on 30-04-2009, 14:31:16
ci ho combattuto pure io...ma per quello ricorsivo...quello iterativo mi funge...quale ti interessava?


Title: Re:verificare esistenza del nodo in un albero binario
Post by: rox on 30-04-2009, 22:04:20
mi serviva quello ricorsivo...cmq postami quello iterativo ,vediamo se riesco a fare  quello ricorsivo sulla base di quello iterativo


Title: Re:verificare esistenza del nodo in un albero binario
Post by: Alex_47 on 01-05-2009, 11:17:01
Ecco la mia soluzione al vostro problema^^

Code:
public boolean Esiste(int val) throws ObjectNotFoundException
{
Nodo p = root;
return RicorEsiste(p,val);
}


public boolean RicorEsiste(Nodo p,int val) throws ObjectNotFoundException
{
if(p != null)
{
if(val == p.key)
{
return true;
}
else if(val < p.key)
{
return RicorEsiste(p.left,val);
}
else
{
return RicorEsiste(p.right,val);
}
}
return false;

}