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;
            }                 
        }
    }

}

clase ARBOL en JAVA codigo fuente



"La imaginación es más importante que el conocimiento. El conocimiento es ilimitado, mientras que la imaginación no"     -- Albert Einstein










hola como estan amigos en esta ocacion les comparto un proyecto que desarrolle y es la clase arbol que vi en la materia de ESTRUCTURAS DE DATOS en los comentarios del proyecto te daras cuenta de algunas especificaciones.

espero y te ayude y cualquier duda no olvides en comentar.....

AQUI el link de descarga        NO OLVIDES DARLE LIKE 


package po1_arbol;
public class PO1_ARBOL {  //se crea la clase

    public static void main(String[] args) {
       // se instancia para   poder añadir
        ArbolBinarioOrdenado_2 abo = new ArbolBinarioOrdenado_2();
        abo.insertar (100); // datos insertados
        abo.insertar (50);
        abo.insertar (25);
        abo.insertar (75);
        abo.insertar (150);

        System.out.println ("Impresion entreorden: ");// imprime el pre-orden
        abo.imprimirEntre ();
//te dice la cantidad de nodos del árbol
        System.out.println ("Cantidad de nodos del árbol:"+abo.cantidad());
// cuenta las hojas      
        System.out.println ("Cantidad de nodos hoja:"+abo.cantidadNodosHoja()); 
        System.out.println ("Impresion en entre orden junto al nivel del nodo.");
        abo.imprimirEntreConNivel();// saca el nivel
        System.out.print ("Artura del arbol:");// desarrolla la altura
        System.out.println(abo.retornarAltura()); // retorna la altura      
        abo.mayorValorl();
        abo.borrarMenor();
        System.out.println("Luego de borrar el menor:");
        abo.imprimirEntre ();
       
       
    }
}
Subclase
package po1_arbol;
public class ArbolBinarioOrdenado_2 {// subclase árbol
  class Nodo// se desarrolla un nodo
    {
        int info;
        Nodo izq, der;
    }
    Nodo raiz;// se declaran las respectivas variables
    int cant;
    int altura;
    public ArbolBinarioOrdenado_2() {// este método sirve para ordenarlo
   raiz=null;
    }
           
  public void insertar (int info) {// este metodo lo inserta
        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) {// aquí te dice si existe o no algún elemento
        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
        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 que hay
        if (reco!=null) {
            cant++;
            cantidad(reco.izq);
            cantidad(reco.der);
        }
    }
   
    public int cantidad() {
        cant=0;
        cantidad(raiz);
        return cant;
    }

    private void cantidadNodosHoja(Nodo reco) {// método para retornar los nodos de las hojas
        if (reco!=null) {
            if (reco.izq==null && reco.der==null)
                cant++;
            cantidadNodosHoja(reco.izq);
            cantidadNodosHoja(reco.der);
        }
    }
   
    public int cantidadNodosHoja() {// te dice la cantidad de las hojas
        cant=0;
        cantidadNodosHoja(raiz);
        return cant;
    }

    private void imprimirEntreConNivel (Nodo reco,int nivel)  {// método para imprimir 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)    {// método para retornar la altura
        if (reco != null) {   
            retornarAltura (reco.izq,nivel+1);
            if (nivel>altura)
                altura=nivel;
            retornarAltura (reco.der,nivel+1);
        }
    }

    public  int retornarAltura () {// retorna la altura
        altura=0;
        retornarAltura (raiz,1);
        return altura;
    }
   
    public void mayorValorl() {// te dice cual es el mayor
        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() {// borra el dato menor
        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;
            }                 
        }
    }

}