• Domingo 22 de Diciembre de 2024, 09:22

Autor Tema:  arbol grado 3  (Leído 822 veces)

mabzerox

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
arbol grado 3
« en: Domingo 15 de Agosto de 2010, 05:51 »
0
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();
                    }


                }
            }