You are on page 1of 3

//arbol en java inorden, posorden, preorden */

//definicion de la clase NodoArbol


class NodoArbol {
//miembros de acceso
NodoArbol nodoizquierdo;
int datos;
NodoArbol nododerecho;
//iniciar dato y hacer de este nodo un nodo hoja
public NodoArbol(int datosNodo)
{
datos = datosNodo;
nodoizquierdo = nododerecho = null; //el nodo no tiene hijos
}
//buscar punto de insercion e insertar nodo nuevo
public synchronized void insertar(int valorInsertar)
{
//insertar en subarbol izquierdo
if (valorInsertar < datos){

//inserta nuevo nodoarbol


if (nodoizquierdo == null)
nodoizquierdo = new NodoArbol(valorInsertar);
else //continua recorriendo subarbol izquierdo
nodoizquierdo.insertar(valorInsertar);
}
//insertar nodo derecho
else if(valorInsertar > datos){
//insertar nuevo nodoarbol
if (nododerecho == null)
nododerecho = new NodoArbol(valorInsertar);
else //continua recorriendo subarbol derecho
nododerecho.insertar(valorInsertar);
}
} //fin del metodo insertar
} //fin clase nodoarbol
//---------- CLASE ARBOL------------------
class Arbol{
private NodoArbol raiz;
//contruir un arbol vacio
public Arbol()
{
raiz = null;
}
//insertar un nuevo nodo en el arbol de busqueda binaria
public synchronized void insertarNodo(int valorInsertar)
{
if(raiz == null)
raiz = new NodoArbol(valorInsertar); //crea nodo raiz
else
raiz.insertar(valorInsertar); // llama al metodo inserta
r
}
//--------------- EMPESAR EL RECORRIDO EN PREORDEN----------------------
-
public synchronized void recorridoPreorden()
{
ayudantePreorden(raiz);
}
//metodo recursivo para recorrido en preorden
private void ayudantePreorden(NodoArbol nodo)
{
if (nodo == null)
return;

System.out.print(nodo.datos + " "); // mostrar datos del nodo


ayudantePreorden(nodo.nodoizquierdo); //recorre subarbol izquier
do
ayudantePreorden(nodo.nododerecho); //recorre subarbol derecho
}
//--------------EMPEZAR RECORRIDO INORDEN-------------------------------
----
public synchronized void recorridoInorden()
{
ayudanteInorden(raiz);
}
// metodo recursivo para recorrido inorden
private void ayudanteInorden(NodoArbol nodo)
{
if (nodo == null)
return;

ayudanteInorden(nodo.nodoizquierdo);
System.out.print(nodo.datos + " ");
ayudanteInorden(nodo.nododerecho);
}

//-----------------------------EMPEZAR RECORRIDO POSORDEN---------------


------------------
public synchronized void recorridoPosorden()
{
ayudantePosorden(raiz);
}
//metodo recursivo para recorrido posorden
private void ayudantePosorden(NodoArbol nodo)
{
if (nodo == null)
return;
ayudantePosorden(nodo.nodoizquierdo);
ayudantePosorden(nodo.nododerecho);
System.out.print(nodo.datos + " ");
}
}//fin clase arbol
//programa para probar la clase arbol
public class PruebaArbol {
public static void main(String args[])
{
Arbol arbol = new Arbol();
int valor;
System.out.println( "Insertando los siguientes valores: ");
//insertando 10 numeros aleatorios del 0 al 99 en el arbol
for (int i = 1; i<=10 ; i++)
{
valor = (int) (Math.random() * 100);
System.out.print(valor + " ");
arbol.insertarNodo(valor);
}

System.out.println("\n\nRecorrido preorden");
arbol.recorridoPreorden();
System.out.println("\n\nRecorrido inorden");
arbol.recorridoInorden();
System.out.println("\n\nRecorrido posorden");
arbol.recorridoPosorden();
}
}

You might also like