Sie sind auf Seite 1von 4

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

//definicion de la clase NodoArbol


class NodoArbol {

//miembros de acceso
NodoArbol nodoizquierdo;
String datos;
NodoArbol nododerecho;

//iniciar dato y hacer de este nodo un nodo hoja


public NodoArbol(String datosNodo)
{
datos = datosNodo;
nodoizquierdo = nododerecho = null; //el nodo no tiene hijos
}

//buscar punto de insercion e insertar nodo nuevo


public synchronized void insertar(String valorInsertar)
{
//insertar en subarbol izquierdo
if (valorInsertar.length() <= datos.length()){

//inserta nuevo nodoarbol


if (nodoizquierdo == null)
nodoizquierdo = new NodoArbol(valorInsertar);
else //continua recorriendo subarbol izquierdo
nodoizquierdo.insertar(valorInsertar);
}

//insertar nodo derecho


else if(valorInsertar.length() > datos.length()){

//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(String valorInsertar)
{
if(raiz == null)
raiz = new NodoArbol(valorInsertar); //crea nodo raiz

else
raiz.insertar(valorInsertar); // llama al metodo insertar
}

//--------------- 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
izquierdo
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 árbol

//programa para probar la clase arbol


public class PruebaArbol {
public static void main(String args[])
{
Arbol arbol = new Arbol();

System.out.println( "Insertando los siguientes valores:"+


"camino, abedul, estruendo, noche, dia, espejo, roca, dirimir,"+
"ambulancia, hiperrealidad, amigo");

arbol.insertarNodo("camino");
arbol.insertarNodo("abedul");
arbol.insertarNodo("estruendo");
arbol.insertarNodo("noche");
arbol.insertarNodo("dia");
arbol.insertarNodo("espejo");
arbol.insertarNodo("roca");
arbol.insertarNodo("dirimir");
arbol.insertarNodo("ambulancia");
arbol.insertarNodo("hiperrealidad");
arbol.insertarNodo("amigo");
System.out.println("\n\nRecorrido preorden");
arbol.recorridoPreorden();

System.out.println("\n\nRecorrido inorden");
arbol.recorridoInorden();

System.out.println("\n\nRecorrido posorden");
arbol.recorridoPosorden();
}
}

Das könnte Ihnen auch gefallen