Anda di halaman 1dari 9

//clase Nodo

package arboles;

public class Nodo { //metodos y atributos de del nodo ABB

private int valor;

private Nodo hijoIzquierdo;

private Nodo hijoDerecho;

public Nodo(int valor) {

this.valor = valor;

public int getValor() {

return valor;

public void setValor(int valor) {

this.valor = valor;

public Nodo getHijoIzquierdo() {

return hijoIzquierdo;

public void setHijoIzquierdo(Nodo hijoIzquierdo) {

this.hijoIzquierdo = hijoIzquierdo;

public Nodo getHijoDerecho() {


return hijoDerecho;

public void setHijoDerecho(Nodo hijoDerecho) {

this.hijoDerecho = hijoDerecho;

public void add(int elemento){

Nodo nuevo = new Nodo(elemento);

if (elemento > this.valor){

if (this.hijoDerecho == null){

this.hijoDerecho = nuevo;

else{

this.hijoDerecho.add(elemento);

else{

if (this.hijoIzquierdo == null){

this.hijoIzquierdo = nuevo;

else{

this.hijoIzquierdo.add(elemento);

}
/**

* Busca un elemento dentro de la estructura

* @param key, elemento a buscar

* @return, indicador lógico para éxito/fracaso de búsqueda

*/

public boolean find(int key){

if (this.valor == key){

return true;

if (this.valor > key){

if (this.hijoIzquierdo == null){

return false;

return this.hijoIzquierdo.find(key);

else{

if (this.hijoDerecho == null){

return false;

return this.hijoDerecho.find(key);

//clase árbol

package arboles;

import static java.lang.Math.pow;

public class Arbol {


private Nodo raiz;

int altura;

public void add(int elemento){

if (raiz == null){

this.raiz = new Nodo(elemento);

else{

this.raiz.add(elemento);

public void recorridoInOrden(){

this.inOrden(raiz);

private void inOrden(Nodo a){

if (a != null){

this.inOrden(a.getHijoIzquierdo());

System.out.print(a.getValor() + " ");

this.inOrden(a.getHijoDerecho());

public void recorridoPostOrden(){

this.postOrden(raiz);

private void postOrden(Nodo a){

if (a != null){
this.inOrden(a.getHijoIzquierdo());

this.inOrden(a.getHijoDerecho());

System.out.print(a.getValor() + " ");

public void recorridoPreOrden(){

this.preOrden(raiz);

private void preOrden(Nodo a){

if (a != null){

System.out.print(a.getValor() + " ");

this.inOrden(a.getHijoIzquierdo());

this.inOrden(a.getHijoDerecho());

public boolean find(int key){ //metodo que busca el numero , retorna true si lo encuentra y en
caso contrario un false

return this.raiz.find(key);

void remove(int llave) // metodo que elimina el valor ingresado por usuario.

this.raiz= eliminar(llave, raiz);

Nodo eliminar(int llave, Nodo nodo)

if (nodo==null)
return null;

if (nodo.getValor()==llave)

return unir(nodo.getHijoIzquierdo(), nodo.getHijoDerecho());

if (llave<nodo.getValor())

nodo.setHijoIzquierdo( eliminar(llave, nodo.getHijoIzquierdo()));

else

nodo.setHijoDerecho( eliminar(llave, nodo.getHijoDerecho()));

return nodo;

Nodo unir(Nodo izq, Nodo der)

if (izq==null)

return der;

if (der==null)

return izq;

Nodo centro= unir(izq.getHijoDerecho(), der.getHijoIzquierdo());

izq.setHijoDerecho(centro);

der.setHijoIzquierdo(izq);

return der;

private int getAltura(Nodo aux){

//ESCRIBA AQUI SUS CODIGOS

if(aux == null){

return 0;

}else return (1+ Math.max(getAltura(aux.getHijoIzquierdo()),getAltura(aux.getHijoDerecho())));

}
public int getAltura(){

altura = getAltura(raiz);

return altura;

public boolean AbbCompleto()

int total= (int) pow(2,this.getAltura());

if(total==cuentaNodos(this.raiz))

return true;

return false;

public int cuentaNodos(Nodo raiz)

if(raiz == null)

return 1;

else

return 1+cuentaNodos(raiz.getHijoDerecho())+cuentaNodos(raiz.getHijoIzquierdo());

}
}

// clase main

package arboles;

import java.util.*;

import java.util.Random;

public class MainArbol {

public static void main(String[] args) {

Arbol a = new Arbol();

Random rnd = new Random();

int x;

for (int i = 0; i < 8; i++) {

x = rnd.nextInt(40);

a.add(x);

System.out.println("\nInOrden: ");

a.recorridoInOrden();

System.out.println("\nPostOrden: ");

a.recorridoPostOrden();

System.out.println("\nPreOrden: ");
a.recorridoPreOrden();

System.out.println("\nInOrden: ");

a.recorridoInOrden();

System.out.println("\nLa altura del arbol es :"+a.getAltura());

a.AbbCompleto();