Upload
filo302012
View
1.146
Download
3
Embed Size (px)
Citation preview
PROGRAMA EN JAVA DE ÀRBOL BINARIO
package arbol;
public class NodoArbol {//definicion de la clase nodo arbol
NodoArbol nodoIzquierdo;//miembros de acceso del paquete
int datos;//se declara datos de tipo entero
NodoArbol nodoDerecho;//miembros de acceso del paquete
public NodoArbol (int datosNodo)//inicializar datos y hacer de este nodo un nodo hoja
{
datos = datosNodo;//datos es igual a datosNodo
nodoIzquierdo = nodoDerecho = null;//indica que el nodo no tiene hijos
}
public synchronized void insertar (int valorInsertar)//localizar el punto de insercion e insertar nuevo nodo, ignorar valores duplicados
{
if (valorInsertar < datos){//insertar en subarbol izquierdo
if (nodoIzquierdo == null)//insertar nuevoNodo Àrbol
nodoIzquierdo = new NodoArbol (valorInsertar);//continuar recorriendo subarbol izquierdo
else//sino
nodoIzquierdo.insertar(valorInsertar);
}
else if (valorInsertar > datos){//insertar en subarbol derecho
if (nodoDerecho == null)//insertar nuevoNodo Àrbol
nodoDerecho = new NodoArbol (valorInsertar);
else//continuar recorriendo subàrbol derecho
nodoDerecho.insertar(valorInsertar);
}
}//fin del metodo insertar
}//fin de la clase NodoArbol
package arbol;
public class Arbol {//definicion de la clase Arbol
private NodoArbol raiz;
public Arbol()//construir un objeto Àrbol vacio de enteros
{
raiz = null;//raiz es igual a null
}
public synchronized void insertar (int valorInsertar)//insertar un nuevo nodo en el Àrbol de busqueda binaria
{
if (raiz == null)//si raiz es igual a null
raiz = new NodoArbol (valorInsertar);//crear el nodo raiz aqui
else//sino
raiz.insertar(valorInsertar);//llamar al metodo insertar
}
public synchronized void recorridoPreorden ()//comenzar el recorrido preorden
{
ayudantePreorden (raiz);
}
private void ayudantePreorden(NodoArbol nodo)//metodo recursivo para realizar recorrido preorden
{
if ( nodo == null)//si nodo es igual a null
return;//retornar o regresar
System.out.print(nodo.datos + "");//mostrar datos del nodo
ayudantePreorden (nodo.nodoIzquierdo);//recorrer subÀrbol izquierdo
ayudantePreorden (nodo.nodoDerecho);//recorrer subÀrbol derecho
}
public synchronized void recorridoInorden()//empezar recorrido inorden
{
ayudanteInorden (raiz);
}
private void ayudanteInorden (NodoArbol nodo)//metodo recursivo para realizar recorrido inorden
{
if (nodo == null)//si nodo es igual a null
return;//retornar o regresar
ayudanteInorden (nodo.nodoIzquierdo);//recorrer subÀrbol izquierdo
System.out.print(nodo.datos + "");//mostrar datos del nodo
ayudanteInorden (nodo.nodoDerecho);//recorrer subÀrbol derecho
}
public synchronized void recorridoPostorden()//empezar recorrido postorden
{
ayudantePostorden (raiz);
}
private void ayudantePostorden (NodoArbol nodo)//metodo recursivo para realizar recorrido postorden
{
if (nodo == null)//si nodo es igual a null
return;//retornar o regresar
ayudantePostorden (nodo.nodoIzquierdo);//recorrer subÀrbol izquierdo
ayudantePostorden (nodo.nodoDerecho);//recorrer subÀrbol derecho
System.out.print(nodo.datos + "");//mostrar datos del nodo
}
}
package arbol;
public class PruebaArbol {//incia que la clase PruebaÂrbol es publica
public static void main (String args [])//el metodo main hace que se pueda realizar la aplicaciòn
{
Arbol arbol = new Arbol();//se crea un nuevo arbol
int valor;//se crea valor de tipo entero
System.out.print ("insertantdo los siguientes valores: ");//manda imprimer el mensaje
for (int i = 1; i<10; i++){//insertar 10 enteros aleatorios del 0 al 99 en àrbol
valor = (int)(Math.random()*100);
System.out.print (valor + "");
arbol.insertar(valor);
}
System.out.println("\n\nRecorrido preorden");//imprime el recorrido preorden
arbol.recorridoPreorden();//realizar recorrido preorden del Árbol
System.out.println("\n\nRecorrido Inorden");//imprime el recorrido Inorden
arbol.recorridoInorden();//realizar recorrido Inorden del Árbol
System.out.println("\n\nRecorrido Postorden");//imprime el recorrido Postorden
arbol.recorridoPostorden();//realizar recorrido Postorden del Árbol
System.out.println();//manda imprimer el resultado para el usuario
}
}//fin de la clase PruebaÀrbol