Muy buenas comunidad, estoy tratando de agregar tres nodos a una raiz, logre insertar los tres nodos pero mi problema es que el nodo del centro no me agrega otros tres nuevos nodos, solo esta agregando a los nodos hijos que estan a un lado es decir al nodo izquiero y al derecho. Como puedo hacer para que inserte de forma recursiva en el nodo del centro? Muchas gracias de antemano.
static void Insertar(NodoT Raiz, int Dato)
{
if (Dato < Raiz.Informacion)
{
if (Raiz.NodoIzquierdo == null)
{
NodoT NuevoNodo = new NodoT();
NuevoNodo.Informacion = Dato;
Raiz.NodoIzquierdo = NuevoNodo;
}
else
{
if (Dato > Raiz.NodoIzquierdo.Informacion && Raiz.NodoMedio == null)
{
NodoT NuevoNodo = new NodoT();
NuevoNodo.Informacion = Dato;
Raiz.NodoMedio = NuevoNodo;
}
else
{
if (Dato < Raiz.NodoIzquierdo.Informacion && Raiz.NodoMedio == null)
{
NodoT NuevoNodo = new NodoT();
NuevoNodo.Informacion = Dato;
Raiz.NodoMedio = Raiz.NodoIzquierdo;
Raiz.NodoIzquierdo = NuevoNodo;
}
else
{//Llamada recursiva
Insertar(Raiz.NodoIzquierdo, Dato);
}
}
}
}
else
{//Buscar por el lado derecho
if (Dato > Raiz.Informacion)
{
if (Raiz.NodoDerecho == null)
{
NodoT NuevoNodo = new NodoT();
NuevoNodo.Informacion = Dato;
Raiz.NodoDerecho = NuevoNodo;
}
else
{
if (Dato < Raiz.NodoDerecho.Informacion && Raiz.NodoMedio == null)
{
NodoT NuevoNodo = new NodoT();
NuevoNodo.Informacion = Dato;
Raiz.NodoMedio = NuevoNodo;
}
else
{
if (Dato > Raiz.NodoDerecho.Informacion && Raiz.NodoMedio == null)
{
NodoT NuevoNodo = new NodoT();
NuevoNodo.Informacion = Dato;
Raiz.NodoMedio = Raiz.NodoDerecho;
Raiz.NodoDerecho = NuevoNodo;
}
else
{
//Llamada recursiva por el lado derecho
Insertar(Raiz.NodoDerecho, Dato);
}
}
}
}
else
{
//El Nodo existe en el Arbol
Console.WriteLine("Nodo Existente, Imposible Insertar...");
Console.ReadLine();
}
}
}