|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2009
Messaggi: 98
|
[JAVA] Ricerca in albero n-ario
Cio che volevo sapere è come si possa fare a livello di programmazione un accesso a tutte le foglie dell'albero...
grazie in anticipo |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
dipende...in parole spicciole fai ricorsivamente un controllo sul figlio sinistro, setti una variabile di "cheching" e passi al destro.
ovvimanet prima devi scendere e poi risali (bottom up). questa è la prima cosa che mi viene in emnte
__________________
My gaming placement |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jul 2009
Città: Milano
Messaggi: 270
|
Codice:
DFS(Albero):
Foglie <- 0; //insieme vuoto
DFS_visit(Albero[radice], Foglie);
end
DFS_visit(v, S):
if Adj[v] == 0 then
S <- S unione v
return;
for w in Adj[v] do
if Adj[w] == 0 then S <- S unione w;
else DFS_visit(w, S);
end
end
Probabilmente si può fare meglio.
__________________
AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200 Ultima modifica di __ZERO_UNO__ : 11-10-2011 alle 22:46. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2267
|
Puoi farlo con una ricerca ricorsiva in profondità o in larghezza.
Supposto che tu abbia definito la classe nodo in modo opportuno con almeno un campo chiave la ricerca in profondità dovrebbe essere più o meno così: Codice:
public class Nodo{
public:
int chiave;
Vector<Nodo> figli;
}
nodo ricercaDF(Nodo n, int valore){
if(n.chiave == valore) return n;
for(Iterator<Vector<Nodo>> it = n.figli.iterator(); it.hasNext();){
Nodo esito = ricercaDF(it.next(), valore);
if(esito != null) return esito;
}
return null;
}
Codice:
ricercaDF(radice,valore); Per la ricerca in larghezza dovresti prima scorrere tutti i figli di ogni nodo ricercando la chiave e poi eseguire la ricorsione su di essi.
__________________
Concluso con:... Ultima modifica di Floris : 11-10-2011 alle 23:55. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Ma devi visitare solo le foglie?
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2267
|
E' vero...scusa ho letto male...dal titolo avevo pensato ad una ricerca sull'albero completo.
__________________
Concluso con:... |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2125
|
E controlla che la profondità non sia infinita
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale. Go to a Wormhole |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:03.




















