package main;
import javax.swing.*;
//import java.util.Random;
import operaciones.Arbol;
public class PruebaArbol {
public static void main(String[] args) {
Arbol arbol = new Arbol();
int in;
//, valor;
String nombre;
// Random numeroAleatorio = new Random();
in = Integer.parseInt(JOptionPane.showInputDialog(" Digite cuantos Nombres Contendra El Arbol " ));
System.out.println(" Insertando los siguientes valores: ");
for (int i = 1; i <= in; i++) {
nombre = JOptionpane.showInputDialog("Escribe tu nombre:");
// valor = Integer.parseInt(JOptionPane.showInputDialog(" Digite Los Numeros Para El Arbol "));
// valor = numeroAleatorio.nextInt(100); Lo quito para dijitar datos por el usurio
System.out.print(nombre + " ");
arbol.insertarNodo(nombre);
}
System.out.println("\n\nRecorrido Preorden");
arbol.recorridoPreorden();
System.out.println("\n\nRecorrido Inorden");
arbol.recorridoInorden();
System.out.println("\n\nRecorrido Postorden");
arbol.recorridoPostorden();
System.out.println();
}
}
-----------------package operaciones;
public class Arbol {
private NodoArbol raiz;
public Arbol() {
raiz = null;
}
public void insertarNodo(int valorInsertar) {
if (raiz == null) {
raiz = new NodoArbol(valorInsertar);
} else {
raiz.insertar(valorInsertar);
}
}
public void recorridoPreorden() {
ayudantePreorden(raiz);
}
private void ayudantePreorden(NodoArbol nodo) {
if (nodo == null) {
return;
}
System.out.printf("%d ", nodo.datos);
ayudantePreorden(nodo.nodoIzq);
ayudantePreorden(nodo.nodoDer);
}
public void recorridoInorden() {
ayudanteInorden(raiz);
}
private void ayudanteInorden(NodoArbol nodo) {
if (nodo == null) {
return;
}
ayudanteInorden(nodo.nodoIzq);
System.out.printf("%d ", nodo.datos);
ayudanteInorden(nodo.nodoDer);
}
public void recorridoPostorden() {
ayudantePostorden(raiz);
}
private void ayudantePostorden(NodoArbol nodo) {
if (nodo == null) {
return;
}
ayudantePostorden(nodo.nodoIzq);
ayudantePostorden(nodo.nodoDer);
System.out.printf("%d ", nodo.datos);
}
}
------------package operaciones;
public class NodoArbol {
NodoArbol nodoIzq;
NodoArbol nodoDer;
int datos;
public NodoArbol(int datosNodo) {
this.datos = datosNodo;
nodoIzq = nodoDer = null;
}
public void insertar(int valorInsertar) {
if (valorInsertar < datos) {
if (nodoIzq == null) {
nodoIzq = new NodoArbol(valorInsertar);
} else {
nodoIzq.insertar(valorInsertar);
}
} else if (valorInsertar > datos) {
if (nodoDer == null) {
nodoDer = new NodoArbol(valorInsertar);
} else {
nodoDer.insertar(valorInsertar);
}
}
}
}
//---------- 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
//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
//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();
}
}
//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 arbol
//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();
}
}