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:
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!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 ; _ _ _ _ _ } _ _ _ } _ _}

Rispondi quotando