viernes, 19 de abril de 2013
Algoritmo de Búsqueda
// Definición de la clase Nodo Árbol
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 inserción 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 método insertar
} //fin clase nodoarbol
//---------- CLASE ÁRBOL------------------
class Arbol{
private NodoArbol raiz;
//Construir un árbol vació
public Arbol()
{
raiz = null;
}
//Insertar un nuevo nodo en el árbol de búsqueda binaria
public synchronized void insertarNodo(int valorInsertar)
{
if(raiz == null)
raiz = new NodoArbol(valorInsertar); //crea nodo raíz
else
raiz.insertar(valorInsertar); // llama al método insertar
}
//--------------- EMPESAR EL RECORRIDO EN PRE ORDEN-----------------------
public synchronized void recorridoPreorden()
{
ayudantePreorden(raiz);
}
//Método recursivo para recorrido en pre orden
private void ayudantePreorden(NodoArbol nodo)
{
if (nodo == null)
return;
System.out.print(nodo.datos + " "); // Mostrar datos del nodo
ayudantePreorden(nodo.nodoizquierdo); //Recorre subarbol izquierdo
ayudantePreorden(nodo.nododerecho); //Recorre subarbol derecho
}
//--------------EMPEZAR RECORRIDO IN ORDEN-----------------------------------
public synchronized void recorridoInorden()
{
ayudanteInorden(raiz);
}
// Método 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 POS ORDEN---------------------------------
public synchronized void recorridoPosorden()
{
ayudantePosorden(raiz);
}
//Método 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 árbol
//Programa para probar la clase árbol
public class PruebaArbol {
public static void main(String args[])
{
Arbol arbol = new Arbol();
int valor;
System.out.println( "Insertando los siguientes valores: ");
//Insertando 10 números aleatorios del 0 al 99 en el árbol
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();
}
}
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario