martes, 2 de diciembre de 2014

clase ARBOL 2 en JAVA codigo fuente




“Si ayudas en la red, los demás también te ayudaran” 










HOLA amigos hoy les comparto mi proyecto de árbol es un codigo un poco extenso espero y les ayude.en los comentarios vienen algunas especificaciones revisa mis otros codigos que estan en este blog espero y te puedan ayudar NO OLVIDES EN COMENTAR 

AQUI el link de descarga




package arbolabel;


public class ArbolAbel {

    NodoB Padre;
                NodoB Raiz;
               
                //Constructor
                public ArbolAbel(){
                               Raiz = null;
                }
               
                //Insercion de un elemento en el arbol
                public void insertaNodo(int Elem){
                               if(Raiz == null)
                                               Raiz = new NodoB(Elem);
                               else
                                               Raiz.insertar(Elem);
                }
               
                //Preorden Recursivo del arbol
                public void preorden (NodoB Nodo){
                               if(Nodo == null)
                                               return;
                                else{
                                               System.out.print (Nodo.dato + " ");
                                               preorden (Nodo.Hizq);
                                               preorden (Nodo.Hder);
                               }
                }
               
                //PostOrden recursivo del arbol
                public void postOrden (NodoB Nodo){
                               if(Nodo == null)
                                               return;
                               else{
                                               postOrden (Nodo.Hizq);
                                               postOrden (Nodo.Hder);
                                               System.out.print (Nodo.dato + " ");
                               }
                }
               
                //Inorden Recursivo del arbol
                public void inorden (NodoB Nodo){       
                               if(Nodo == null)
                                               return;
                               else{
                                               inorden (Nodo.Hizq);
                                               System.out.print(Nodo.dato + " ");
                                               inorden (Nodo.Hder);
                               }
                }
               

//cantidad de niveles que posee el arbol
   public int altura (NodoB Nodo){
                if (Nodo==null)
         return -1;
    else
         return 1+Math.max(altura(Nodo.Hizq),altura(Nodo.Hder));
                }
//cantidad de elementos que posee el arbol       
public int tamaño (NodoB Nodo){
    if (Nodo==null)
       return 0;
    else
      return 1+tamaño(Nodo.Hizq)+tamaño(Nodo.Hder);
}
                //Busca un elemento en el arbol
public void buscar (int Elem, NodoB A){
                               if(A == null | A.dato == Elem){
                                               System.out.print(A.dato + " ");
                                               return;
                               }
                               else{
                                               if(Elem>A.dato)
                                                               buscar(Elem, A.Hder);
                                               else
                                                               buscar( Elem, A.Hizq);
                               }
                }
                              
               
public static void main (String[]args){
                               ArbolAbel A = new ArbolAbel();
                               A.insertaNodo(1);
                               A.insertaNodo(3);
                               A.insertaNodo(2);
                                A.insertaNodo(23);
                               A.insertaNodo(24);
                               System.out.print("El recorrido en Preorden es: ");
                               A.preorden (A.Raiz);
                               System.out.println();
                               System.out.print("El recorrido en Inorden es: ");
                               A.inorden (A.Raiz);
                               System.out.println();
                               System.out.print("El recorrido en Postorden es: ");
                               A.postOrden (A.Raiz);
                               System.out.println();
                               System.out.println("La altura del arbol es: " + A.altura (A.Raiz));              
                               System.out.println("La cantidad de \"nodos\" que posee el arbol es: " + A.tamaño(A.Raiz));
  }}
Subclase
package po1_arbol;
public class ArbolBinarioOrdenado_2 {// se crea la clase
  class Nodo
    {
        int info;
        Nodo izq, der;
    }
    Nodo raiz;
    int cant;
    int altura;

    public ArbolBinarioOrdenado_2() {// se desarrolla el constructor
        raiz=null;
    }
           
    public void insertar (int info) {// metodo para inserter en forma recursivo
        if (!existe(info)) {
            Nodo nuevo;
            nuevo = new Nodo ();
            nuevo.info = info;
            nuevo.izq = null;
              nuevo.der = null;
            if (raiz == null)
                raiz = nuevo;
            else {
                Nodo anterior = null, reco;
                reco = raiz;
                while (reco != null)  {
                    anterior = reco;
                    if (info < reco.info)
                        reco = reco.izq;
                    else
                        reco = reco.der;
                }
                if (info < anterior.info)
                    anterior.izq = nuevo;
                else
                    anterior.der = nuevo;
            }
        }   
    }

    public boolean existe(int info) {// te dice si existen o no elemntos en el arbol
        Nodo reco=raiz;
        while (reco!=null) {
            if (info==reco.info)
                return true;
            else
                if (info>reco.info)
                    reco=reco.der;
                else
                    reco=reco.izq;
        }
        return false;
    }

    private void imprimirEntre (Nodo reco)  {// imprime los nodos o datos del arbol
        if (reco != null)  {   
            imprimirEntre (reco.izq);
            System.out.print(reco.info + " ");
            imprimirEntre (reco.der);
        }
    }

    public void imprimirEntre () {
        imprimirEntre (raiz);
        System.out.println();
    }

   
    private void cantidad(Nodo reco) {// te dice la cantidad de nodos en el arbol
        if (reco!=null) {
            cant++;
            cantidad(reco.izq);
            cantidad(reco.der);
        }
    }
   
    public int cantidad() {
        cant=0;
        cantidad(raiz);
        return cant;
    }

    private void cantidadNodosHoja(Nodo reco) {// te dice la cantidad de hojas que hay
        if (reco!=null) {
            if (reco.izq==null && reco.der==null)
                cant++;
            cantidadNodosHoja(reco.izq);
            cantidadNodosHoja(reco.der);
        }
    }
   
    public int cantidadNodosHoja() {
        cant=0;
        cantidadNodosHoja(raiz);
        return cant;
    }

    private void imprimirEntreConNivel (Nodo reco,int nivel)  {// imprime el nivel
        if (reco != null) {   
            imprimirEntreConNivel (reco.izq,nivel+1);
            System.out.print(reco.info + " ("+nivel+") - ");
            imprimirEntreConNivel (reco.der,nivel+1);
        }
    }

    public void imprimirEntreConNivel () {
        imprimirEntreConNivel (raiz,1);
        System.out.println();
    }
   
    private void retornarAltura (Nodo reco,int nivel)    {// retorna la altura
        if (reco != null) {   
            retornarAltura (reco.izq,nivel+1);
            if (nivel>altura)
                altura=nivel;
            retornarAltura (reco.der,nivel+1);
        }
    }

    public  int retornarAltura () {
        altura=0;
        retornarAltura (raiz,1);
        return altura;
    }
    public void mayorValorl() {// retorna el valor mayor del arbol
        if (raiz!=null) {
            Nodo reco=raiz;
            while (reco.der!=null)
                reco=reco.der;
            System.out.println("Mayor valor del árbol:"+reco.info);
        }
    }
    public void borrarMenor() {// retorna el valor menor del arbol
        if (raiz!=null) {
            if (raiz.izq==null)
                raiz=raiz.der;
            else {
                Nodo atras=raiz;
                Nodo reco=raiz.izq;
                while (reco.izq!=null) {
                    atras=reco;
                    reco=reco.izq;
              }  
atras.izq=reco.der;
            }                 
        }
    }

}

No hay comentarios:

Publicar un comentario