Sunteți pe pagina 1din 3

public 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 inserter nodo nuevo


public synchronized void insertar(int valorInsertar)
{
//insertar en subarbol izquierdo
if(valorInsertar < datos)
{
//insertar en subarbol izquierdo
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
nododerecho.insertar(valorInsertar);
}
} // fin del metodo insertar
}

class Arbol
{
private NodoArbol raiz;

//construir un arbol vacio


public Arbol()
{
raiz = null;
}

//insertar un nuevo ndo 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
}

// EMPIEZA EL RECORRIDO EN PREORDEN


public synchronized void recorridoPreorden()
{
ayudantePreorden(raiz);
}
//meoto 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);
}

//meoto 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 PORORDEN


public synchronized void recorridoPosorden()
{
ayudantePosorden(raiz);
}

//meotod recursivo para recorrido posorden


private void ayudantePosorden(NodoArbol nodo)
{
if( nodo == null )
return;

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

Clase controladora:
?
1
2 import javax.swing.JOptionPane;
3
4 public class PruebaArbol
5 {
6 public static void main(String args [])
{
7 Arbol arbol = new Arbol();
8 int valor;
9 String Dato;
10
11 System.out.println("Insertando los siguientes valores: ");
12
13 Dato = JOptionPane.showInputDialog("Inserta el numero de nodos
que desea ingresar");
14 int n = Integer.parseInt(Dato);
15
16 for(int i = 1; i <= n; i++ )
17 {
18 Dato = JOptionPane.showInputDialog("Dame el " + i + " valor
19 para colocar en el Arbol");
valor = Integer.parseInt(Dato);
20 System.out.print(valor + " ");
21 arbol.insertarNodo(valor);
22 }
23
24 System.out.println("\n\nRecorrido Preorden");
arbol.recorridoPreorden();
25
26
System.out.println("\n\nRecorrido Inorden");
27 arbol.recorridoInorden();
28
29 System.out.println("\n\nRecorrido Postorden");
30 arbol.recorridoPosorden();
31 }
32}
33

S-ar putea să vă placă și