|
|
|
|
Strumenti |
15-12-2014, 17:47 | #1 |
Member
Iscritto dal: Oct 2013
Messaggi: 158
|
Algoritmo visita albero ordinato
Ciao a tutti,
qualcuno conosce se c'e dello pseudocodice abbastanza esplicativo per una visita di un albero ordinato non binario? Praticamente partendo dalla radice, voglio scorrere tutti i nodi figli (solo una volta) partendo da sinistra. Ho trovato numerose fonti ma non abbastanza esplicative, forse sbaglio esempio: radice A figli di A: B - C figli di B: D - E figli di C: F - G sequenza output: A B D E C F G (come si chiama questo tipo di visita?) Ultima modifica di sharkkk : 15-12-2014 alle 18:02. |
15-12-2014, 18:47 | #2 |
Member
Iscritto dal: Apr 2007
Messaggi: 182
|
Intendi una ricerca in profondità?
|
15-12-2014, 18:51 | #3 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Visita in preordine.
Il modo più semplice è fare una funzione ricorsiva. Ti scrivo il metodo in java, tanto per farla breve Codice:
public void visitaPreordine() { if (this.root != null) { return; } System.out.println(this.root + " "); this.root.sinistro.visitaPreordine(); this.root.destro.visitaPreordine(); }
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
15-12-2014, 20:15 | #4 |
Member
Iscritto dal: Oct 2013
Messaggi: 158
|
grazie oceans11.
nel caso pero non sia un albero binario? |
16-12-2014, 09:10 | #5 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
cicli (in modo ordinato) la lista dei nodi figlio e per ognuno di essi richiami il metodo.
quindi al posto di: Codice:
this.root.sinistro.visitaPreordine(); this.root.destro.visitaPreordine() Codice:
for (Nodo figlio : this.root.getFigli()) { figlio.visitaPreordine(); }
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:06.