Alberi Binari. Codifica In Java - Appunti di Informatica gratis Studenti.it
Controllo utente in corso...

Relazione per l'esame di Fondamenti di informatica 1 sulla codifica in Java di un programma che inserisce dati in un albero binario e, successivamente, stampa l'albero in preorder, postorder e inorder. Il programma e' stato testato e funziona correttament ( formato doc)

VOTO: stellastellastella Appunto inviato da airjeff79

Esercitazione nona Esercitazione nona In questa esercitazione è presentata la codifica in Java di un programma che, dati in ingresso una serie di interi, allochi tali interi su di un albero binario; successivamente, il programma stampa i valori dei nodi in modalità preorder, postorder e inorder, calcola l'altezza di ogni nodo, la sua profondità, l'altezza dell'albero ed infine stampa i valori dei nodi che si trovano sui livelli pari e quelli dei nodi che si trovano sui livelli dispari . Programma Albero ( IX) import java.io .* ; public class Albero { public int info ; public Albero fsx ; public Albero fdx ; public Albero ( ){ } public Albero ( int n ) { info =n ; } public void aggiungi ( int n ) { // inserimento nodi if ( this.fsx = = null && this.fdx = =null ) { // Caso base if ( n%2= =0 ) fsx =new Albero ( n ) ; else fdx =new Albero ( n ) ; } else { if ( n%2 = =0 ){ // il nodo è pari e quindi va a sinistra if ( this.fsx != null && this.fdx !=null ) fsx.aggiungi ( n ) ; // chiamata ricorsiva else if ( this.fsx = =null ) fsx =new Albero ( n ) ; // non c'è fsx quindi lo si crea else fdx =new Albero ( n ) ; // c'è fsx ma non fdx quindi lo si crea } else if ( n%2 = =1 && this.fdx != null ) // il nodo è dispari if ( this.fsx !=null && this.fdx !=null ) fdx.aggiungi ( n ) ; // chiamata ricorsiva else if ( this.fdx = =null ) fdx =new Albero ( n ) ; // non c'è fdx quindi lo si crea else fsx =new Albero ( n ) ; // c'è fdx ma non fsx quindi lo si crea } } // aggiungi public void preorder ( ) { // stampa preorder System.out.println ( this.info ) ; if ( this.fsx !=null ) this.fsx.preorder ( ) ; if ( this.fdx !=null ) this.fdx.preorder ( ) ; } // preorder public void postorder ( ) { // stampa postorder if ( this.fdx !=null ) this.fdx.postorder ( ) ; System.out.println ( this.info ) ; if ( this.fsx !=null ) this.fsx.postorder ( ) ; } // postorder public void inorder ( ) { // stampa inorder if ( this.fsx !=null || this.fdx !=null ) this.fsx.inorder ( ) ; System.out.println ( this.info ) ; if ( this.fdx !=null ) this.fdx.inorder ( ) ; } // inorder public int calcolaAlt ( ) { // Calcola l'altezza della radice int ndx =0 ; int nsx =0 ; if ( ! ( fdx = =null && fsx = =null ) ) { if ( fdx !=null ) ndx =1+fdx.calcolaAlt( ) ; // Calcolo della lunghezza del percorso destro if ( fsx !=null ) nsx =1+fsx.calcolaAlt( ) ; // Calcolo della lunghezza del percorso sinistro if ( ndx > nsx ) return ( ndx ) ; // Restituzione del percorso maggiore else return ( nsx ) ; } else return 0 ; // Il nodo selezionato è una foglia } // calcolaAlt public int calcolaPro ( int n ){ // calcola la profondità di un nodo if ( n%2 = =0 ){ // il nono è pari int i = 0 ; // inizializzazione del contatore Albero tree =this ; // Inizializzazione di un albero con gli stessi valori dell'albero " chiamante " while ( n !=tree.info ){ if ( tree.fdx !=null && tree.fdx.info = =n ) return ++i ; // abbreviazione per i = i + 1 if ( tree.fsx = =null ) return -1 ; // il nodo non esiste tree =tree.fsx ; ++i ; // in Continua »

vedi tutti gli appunti di informatica »
Carica un appunto Home Appunti
Pagina eseguita in 0.00688695907593 secondi