Este blog fue creado con la intencion de aportar a los alumnos una ayuda con los ejercicios de la carrera de ingenieria de sistemas LEVI VELASQUEZ PAZ

Blogroll

sábado, 16 de diciembre de 2017

Crear un arbol se pueda insertar , pre orden, enorden, post orden eliminar , numeroc de nodos

package proyectoarboles;

public class NodoArbol {

    private int info;
    private NodoArbol hi;
    private NodoArbol hd;

    public NodoArbol() {
    }

    public NodoArbol(int x) {
        info = x;
        hi = null;
        hd = null;
    }

    public NodoArbol(int info, NodoArbol hi, NodoArbol hd) {
        this.info = info;
        this.hi = hi;
        this.hd = hd;
    }

    public int getInfo() {
        return info;
    }

    public void setInfo(int info) {
        this.info = info;
    }

    public NodoArbol getHi() {
        return hi;
    }

    public void setHi(NodoArbol hi) {
        this.hi = hi;
    }

    public NodoArbol getHd() {
        return hd;
    }

    public void setHd(NodoArbol hd) {
        this.hd = hd;
    }

}
package proyectoarboles;

/**
 *
 * @author MARCELINO
 */
public class ArbolBB {

    private NodoArbol raiz;

    public ArbolBB() {
        raiz = null;
    }

    public boolean esVacio() {
        return raiz == null;
    }

    public void inserta(int x) {
        raiz = inserta(x, raiz);
    }

    private NodoArbol inserta(int x, NodoArbol r) {
        if (r == null) {
            r = new NodoArbol(x);
        } else if (x < r.getInfo()) {
            r.setHi(inserta(x, r.getHi()));
        } else if (x > r.getInfo()) {
            r.setHd(inserta(x, r.getHd()));
        }
        return r;
    }

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

    private void enOrden(NodoArbol r) {
        if (r != null) {
            enOrden(r.getHi());
            System.out.print(r.getInfo() + " ");
            enOrden(r.getHd());
        }
    }

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

    private void postOrden(NodoArbol r) {
        if (r != null) {
            postOrden(r.getHi());
            postOrden(r.getHd());
            System.out.print(r.getInfo() + " ");
        }
    }

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

    private void preOrden(NodoArbol r) {
        if (r != null) {
            System.out.print(r.getInfo() + " ");
            preOrden(r.getHi());
            preOrden(r.getHd());
        }
    }

    public int buscarMax() {
        return buscarMax(raiz);
    }

    private int buscarMax(NodoArbol r) {
        int x;
        if (r.getHd() == null) {
            x = r.getInfo();
        } else {
            x = buscarMax(r.getHd());
        }
        return x;
    }

    public int buscarMin() {
        return buscarMin(raiz);
    }

    private int buscarMin(NodoArbol r) {
        int x;
        if (r.getHi() == null) {
            x = r.getInfo();
        } else {
            x = buscarMin(r.getHi());
        }
        return x;
    }

    public int contar() {
        return contar(raiz);
    }

    private int contar(NodoArbol r) {
        if (r == null) {
            return 0;
        } else {
            return 1 + contar(r.getHi()) + contar(r.getHd());
        }
    }

    public void eliminaMin() {
        raiz = eliminaMin(raiz);
    }

    private NodoArbol eliminaMin(NodoArbol r) {
        if (r.getHi() == null) {
            r = r.getHd();
        } else {
            r.setHi(eliminaMin(r.getHi()));
        }
        return r;
    }

    public void elimina(int x) {
        raiz = elimina(x, raiz);
    }

    private NodoArbol elimina(int x, NodoArbol r) {
        if (r != null) {
            if (x < r.getInfo()) {
                r.setHi(elimina(x, r.getHi()));
            } else if (x > r.getInfo()) {
                r.setHd(elimina(x, r.getHd()));
            } else if (r.getHi() == null) {
                r = r.getHd();
            } else if (r.getHd() == null) {
                r = r.getHi();
            } else {
                r.setInfo(buscarMin(r.getHd()));
                r.setHd(eliminaMin(r.getHd()));
            }
        }
        return r;
    }

    public int alturaArbol() {
        return alturaArbol(raiz);
    }

    private int alturaArbol(NodoArbol r) {
        int ahi, ahd;
        if (r == null) {
            return -1;
        } else {
            ahi = 1 + alturaArbol(r.getHi());
            ahd = 1 + alturaArbol(r.getHd());
            if (ahi > ahd) {
                return ahi;
            } else {
                return ahd;
            }
        }
    }
}
package proyectoarboles;


import java.util.Scanner;
public class ProyectoArboles {

    public static void main(String[] args) {
        // TODO code application logic here
        int op, x;
        Scanner entrada = new Scanner(System.in);
        ArbolBB abb = new ArbolBB();

        do {
            System.out.println("Menu Arboles");
            System.out.println("[1] Insertar Arbol");
            System.out.println("[2] Pre Orden");
            System.out.println("[3] En Orden");
            System.out.println("[4] Post Orden");
            System.out.println("[5] Eliminar");
            System.out.println("[6] Numero de nodos");
            System.out.println("[7] altura del Arbol");
            System.out.println("[8] Maximo del arbol");
            System.out.println("[9] Minimo del arbol");
            System.out.println("[10] Salir");
            System.out.print("Ingrese opcion : ");
            op = entrada.nextInt();

            switch (op) {
                case 1:
                    System.out.print(" Ingrese numero : ");
                    x = entrada.nextInt();
                    abb.inserta(x);
                    break;
                case 2:
                    System.out.println(" Pre Orden");
                    abb.preOrden();
                    break;
                case 3:
                    System.out.println(" En Orden");
                    abb.enOrden();
                    break;
                case 4:
                    System.out.println(" Post Orden");
                    abb.postOrden();
                    break;
                case 5:
                    System.out.print(" Ingrese numero a eliminar: ");
                    x = entrada.nextInt();
                    abb.elimina(x);
                    break;
                case 6:
                    System.out.println(" El numero de nodos del arbol" + abb.contar());
                    break;
                case 7:
                    System.out.println(" La altura del arbol es : " + abb.alturaArbol());
                    break;
                case 8:
                    System.out.println(" Maximo elemento" + abb.buscarMax());
                    break;
                case 9:
                    System.out.println(" Minimo elemento" + abb.buscarMin());
                    break;
            }
        } while (op != 10);
    }
}

Share:

0 comentarios:

Publicar un comentario

Buscar este blog

Con tecnología de Blogger.

Blog Archive

Blog Archive