//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 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 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(); } }
martes, 29 de enero de 2013
EJEMPLO DE ARBOL EN JAVA 2
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario