Java Binary Tree

2011-01-15
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;
	}
}