package test; /** * Classe principale per gestire l'ordinamento ad albero binario * @author Abejan * @version 14/12/2010 * */ public class BinaryTree { public static void popola_albero(int array_elementi[]){ int i; BinaryTreeNodo root = new BinaryTreeNodo(array_elementi[0]); for (i=1;i<array_elementi.length;i++){ insert_nodo(root,new BinaryTreeNodo(array_elementi[i])); } stampa_albero_ordinato(root); }//end popola_albero public static boolean insert_nodo(BinaryTreeNodo nodo_nav, BinaryTreeNodo nodo_ins){ if (nodo_nav.getValore()>nodo_ins.getValore() && nodo_nav.getNodo_sx()==null ){ nodo_nav.setNodo_sx(nodo_ins); return true; } else if (nodo_nav.getValore()>nodo_ins.getValore() && nodo_nav.getNodo_sx()!=null ){ insert_nodo(nodo_nav.getNodo_sx(),nodo_ins); return false; } else if (nodo_nav.getValore()<nodo_ins.getValore() && nodo_nav.getNodo_dx()==null ){ nodo_nav.setNodo_dx(nodo_ins); return true; } else if (nodo_nav.getValore()<nodo_ins.getValore() && nodo_nav.getNodo_dx()!=null ){ insert_nodo(nodo_nav.getNodo_dx(),nodo_ins); return false; } else { return false; } }//end insert_nodo public static void stampa_albero_ordinato(BinaryTreeNodo nodo){ if (nodo.getNodo_sx()!=null){ stampa_albero_ordinato(nodo.getNodo_sx()); } System.out.println("Valore nodo="+nodo.getValore()); if (nodo.getNodo_dx()!=null){ stampa_albero_ordinato(nodo.getNodo_dx()); } } public static void main(String[] args) { int ar[]={3,10,5,2,4,9,7,8,1,6}; popola_albero(ar); }//end main }
package test; /** * Classe secondaria per gestire l'ordinamento ad albero binario * @author Abejan * @version 14/12/2010 * */ public class BinaryTreeNodo { private int valore; //valore contenuto nel nodo private BinaryTreeNodo nodo_sx; private BinaryTreeNodo nodo_dx; //costruttore public BinaryTreeNodo(int p_valore){ this.setValore(p_valore); nodo_sx=null; nodo_dx=null; } public void setValore(int valore) { this.valore = valore; } public int getValore() { return valore; } public void setNodo_sx(BinaryTreeNodo nodo_sx) { this.nodo_sx = nodo_sx; } public BinaryTreeNodo getNodo_sx() { return nodo_sx; } public void setNodo_dx(BinaryTreeNodo nodo_dx) { this.nodo_dx = nodo_dx; } public BinaryTreeNodo getNodo_dx() { return nodo_dx; } }