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
Anteprima dell’appunto 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 >
Scarica gratis