1
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Código árbol binario en Java recorrido preorden inorden postorden insertar nodos
« en: 02 de Junio 2021, 23:14 »
Hola, mi problema es que creé un árbol binario en java, sin embargo los valores y su número de nodos ya están asignados. En lo que pido ayuda es que el código debe pedir el numero de nodos y sus valores, por ejemplo: Quiero un árbol con 5 nodos y sus valores son 1,65,3,9,0. O puede que quiera un árbol de 9 nodos y ya escribo sus valores espero haberme explicado bien, el código incluye los recorridos pero estos están bien.
Adjunto el código del árbol binario:
Adjunto el código del árbol binario:
Código: [Seleccionar]
public class ArbolBinarioOrdenado {
public ArbolBinarioOrdenado()
{
raiz = null;
}
int contadorNodos;
//Creamos la clase Nodo
class Nodo
{
int info;
ArbolBinarioOrdenado.Nodo izq;
ArbolBinarioOrdenado.Nodo der;
}
//Declaramos la propiedad raiz del arbol
ArbolBinarioOrdenado.Nodo raiz;
//Inicia metodo Insertar
public void insertar(int info)
{
//Declaramos objeto nuevoArbol
ArbolBinarioOrdenado.Nodo nuevoArbol = new ArbolBinarioOrdenado.Nodo();
//Asigamos información
nuevoArbol.info = info;
nuevoArbol.izq = null;
nuevoArbol.der = null;
//Verificamos si es raiz
if (raiz == null)
{
raiz = nuevoArbol;
}
else
{
//Inicializamos dos nuevos nodos
ArbolBinarioOrdenado.Nodo anterior = null;
ArbolBinarioOrdenado.Nodo actual = null;
//Igualamos el nodo actual a la raiz
actual = raiz;
//Realizamos la logica de ir recorriendo el nodo actual y sus subarboles
while (actual != null)
{
anterior = actual;
if (info < actual.info)
{
actual = actual.izq;
}
else
{
actual = actual.der;
}
}
//Si el nodo actual es nulo, agregamos información a sus lados
if (info < anterior.info)
{
anterior.izq = nuevoArbol;
}
else
{
anterior.der = nuevoArbol;
}
}
}//Termina método Insertar
private void imprimirPreOrden(ArbolBinarioOrdenado.Nodo recorriendo)
{
//Funcion recursiva Preorden
//Recorrido Raiz Izq. Der.
if (recorriendo != null)
{
System.out.print(recorriendo.info + " ");
imprimirPreOrden(recorriendo.izq);
imprimirPreOrden(recorriendo.der);
}
}
private void imprimirInOrden(ArbolBinarioOrdenado.Nodo recorriendo)
{
//Funcion recursiva InOrden
//Recorrido Izq. Raiz Der.
if (recorriendo != null)
{
imprimirInOrden(recorriendo.izq);
System.out.print(recorriendo.info + " ");
imprimirInOrden(recorriendo.der);
}
}
private void imprimirPosOrden(ArbolBinarioOrdenado.Nodo recorriendo)
{
//Funcion recursiva PosOrden
//Recorrido Izq. Der. Raiz
if (recorriendo != null)
{
imprimirPosOrden(recorriendo.izq);
imprimirPosOrden(recorriendo.der);
System.out.print(recorriendo.info + " ");
}
}
public void llamarPreorden()
{
System.out.println("\nImpresion preorden: ");
imprimirPreOrden(raiz);
System.out.println();
}
public void llamarInorden()
{
System.out.println("\nImpresion inorden: ");
imprimirInOrden(raiz);
System.out.println();
}
public void llamarPosorden()
{
System.out.println("\nImpresion postorden: ");
imprimirPosOrden(raiz);
System.out.println();
}
public static void main(String[] args)
{
ArbolBinarioOrdenado abo = new ArbolBinarioOrdenado();
abo.insertar(56);
abo.insertar(24);
abo.insertar(76);
abo.insertar(12);
abo.insertar(27);
abo.insertar(87);
abo.insertar(45);
abo.insertar(85);
abo.insertar(90);
abo.insertar(40);
abo.insertar(54);
abo.llamarPreorden();
abo.llamarInorden();
abo.llamarPosorden();
}
}