Está en la página 1de 4

Proyecto Java: Estructura De Arboles

Procedo a presentar el cdigo empleado para la solucin del problema, a travs del
cdigo aqu presentado pude estructurar el rbol con el arreglo para ambas partes, no
pude realizar el proceso de implementacin del total de nodos para las ramificaciones, el
rbol mostrado en el problema se encuentra balanceado, esto porque ambas de sus
partes no difieren en cantidad y hacen que su estructura tenga el balance, sin ms
comentarios presento el cdigo que utilizo.

Clase No.1 arbolesbinarios:

public class arbolesbinarios {

private class nodoArbol {


private arbolesbinarios n_izq;
private arbolesbinarios n_der;
private int dato;

private void nodoArbol(){


n_izq = null;
n_der = null;
dato = 0;
}
}

public nodoArbol raiz;

public void abb(){


nodoArbol raiz = new nodoArbol();
}

public boolean esVacio(){


return (raiz == null);
}

public void insertar(int a){


if (esVacio()) {
nodoArbol nuevo = new nodoArbol();
nuevo.dato = a;
nuevo.n_izq = new arbolesbinarios();
nuevo.n_der = new arbolesbinarios();
raiz = nuevo;
}
else {
if (a > raiz.dato) {
(raiz.n_izq).insertar(a);
}
if (a < raiz.dato){
(raiz.n_der).insertar(a);
}
}
}
public void preOrder(){
if (!esVacio()) {
System.out.print( raiz.dato + ", " );
raiz.n_der.preOrder();
raiz.n_izq.preOrder();
}
}

public void inOrder(){


if (!esVacio()) {
raiz.n_der.inOrder();
System.out.print( raiz.dato + ", " );
raiz.n_izq.inOrder();
}
}

public void posOrder(){


if (!esVacio()) {
raiz.n_izq.posOrder();
raiz.n_der.posOrder();
System.out.print( raiz.dato + ", " );

}
}

public arbolesbinarios buscar(int a){


arbolesbinarios arbolbinario = null;
if (!esVacio()) {
if (a == raiz.dato) {
return this;
}
else {
if (a < raiz.dato) {
arbolbinario = raiz.n_der.buscar(a);
}
else {
arbolbinario = raiz.n_izq.buscar(a);
}
}
}
return arbolbinario;
}

public boolean existe(int a){


if (!esVacio()) {
if (a == raiz.dato) {
return true;
}
else {
if (a < raiz.dato) {
raiz.n_der.existe(a);
}
else {
raiz.n_izq.existe(a);
}
}
}
return false;
}

public int cantidad(){


if (esVacio()) {
return 0;
}
else {
return (1 + raiz.n_izq.cantidad() + raiz.n_der.cantidad());
}
}

public int altura() {


if (esVacio()) {
return 0;
}
else {
return (1 + Math.max(((raiz.n_der).altura()),
((raiz.n_izq).altura())));
}
}

public int buscarMin() {


arbolesbinarios arbolActual = this;
while( !arbolActual.raiz.n_der.esVacio() ) {
arbolActual = arbolActual.raiz.n_der;
}
int devuelvo= arbolActual.raiz.dato;
arbolActual.raiz=null;
return devuelvo;
}

public int buscarMan() {


arbolesbinarios arbolActual = this;
while( !arbolActual.raiz.n_izq.esVacio() ) {
arbolActual = arbolActual.raiz.n_izq;
}
int devuelvo= arbolActual.raiz.dato;
arbolActual.raiz=null;
return devuelvo;
}

public boolean esHoja() {


boolean hoja = false;
if( (raiz.n_der).esVacio() && (raiz.n_izq).esVacio() ) {
hoja = true;
}
return hoja;
}

public void eliminar(int a) {


arbolesbinarios paraEliminar = buscar(a);
if (!paraEliminar.esVacio()) {
if (paraEliminar.esHoja()) {
paraEliminar.raiz = null;
}
else {
if (!paraEliminar.raiz.n_der.esVacio() &&
!paraEliminar.raiz.n_izq.esVacio()) {
paraEliminar.raiz.dato =
paraEliminar.raiz.n_izq.buscarMin();
}
else {
if (paraEliminar.raiz.n_der.esVacio()) {
paraEliminar.raiz = paraEliminar.raiz.n_izq.raiz;
}else{
paraEliminar.raiz = paraEliminar.raiz.n_der.raiz;
}
}
}
}
}
}