CLR: .Net / Mono / Boo / Otros CLR > C#

 arbol grado 3

(1/1)

mabzerox:
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();
                }


            }
        }

Navegación

[0] Índice de Mensajes

Ir a la versión completa