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);
}
}
0 comentarios:
Publicar un comentario