Originariamente inviato da soeca
Ragazzi sto studiando gli alberi binari di ricerca e sto affrontando un esercizio dove: dato un albero, devo stamparmi tutti i nodi di ogni livello!!Mi spiego meglio:
QUI trovate un esempio di albero binario completo...ciò che voglio fare è ottenere in output: 8,4,12,2,6,10,14,1,3,5,7,9,11,13,15 .... non sto' riuscendo a capire come affrontare l'esercizio....io ho scritto del codice per tentare di risolvere il problema però non funziona per niente....ecco ciò che ho scritto:
codice:
public void leggi()
_ { _ _
_ _ _ StringBuilder str=new StringBuilder(2000);
_ _ _ Nodo tmp=root;
_ _ _ str.append(tmp.getNome()+"\n"+tmp.getLeft().getNome()+"\n");
_ _ _ tmp=tmp.getLeft();
_ _ _ while(true)
_ _ _ {
_ _ _ _ _ if(tmp.getLeft()!=null && tmp.getRight()!=null) //se i figli esistono entrambi
_ _ _ _ _ {
_ _ _ _ _ _ _ str.append(tmp.getLeft().getNome()+"\n"+tmp.getRight().getNome()+"\n");
_ _ _ _ _ _ _ tmp=tmp.getLeft();
_ _ _ _ _ }
_ _ _ _ _ else if(tmp.getLeft()!=null && tmp.getRight()==null)//se trovo il figlio sinistro
_ _ _ _ _ {
_ _ _ _ _ _ _ str.append(tmp.getLeft().getNome());
_ _ _ _ _ _ _ tmp=tmp.getLeft();
_ _ _ _ _ }
_ _ _ _ _ else if(tmp.getLeft()==null && tmp.getRight()!=null) //se trovo il figlio destro e non il sinistro
_ _ _ _ _ {
_ _ _ _ _ _ _ str.append(tmp.getRight().getNome());
_ _ _ _ _ _ _ tmp=tmp.getLeft();
_ _ _ _ _ }
_ _ _ _ _ else if(tmp.getLeft()==null && tmp.getRight()==null) //se non c'è alcun figlio finisci il ciclo
_ _ _ _ _ {
_ _ _ _ _ _ _ return ;
_ _ _ _ _ }
_ _ _ }
_ _}
ancora non ho avviato il programma però svolgendo su carta quanto ho scritto....praticamente ho notato che stamperebbe: 8,4,2,6,1,3 che ovviamente è sbagliato....non sto' proprio riuscendo a trovare una soluzione(mi scuso se magari per alcuni il mio problema è banale però ammetto di essere abbastanza neofita nel campo della programmazione!!) Grazie a tutti!