예제 #1
0
 //Se encargarga de insertar el dominio al arbol
 public static ArbolGeneral insetarDominioArbol(ArbolGeneral arbol, string[] dominio, int nivel)
 {
     if (nivel <= 7)
     {
         arbol.NivelNodo = nivel;
         if (nivel == 7)
         {
             if (arbol.Raiz.ListaHijos.nuevoIncluye(dominio[6]) == -1)
             {
                 arbol.agregarHijo(new ArbolGeneral(dominio[6], solicitarEspecie(dominio[6]))
                 {
                     NivelNodo = nivel
                 });
             }
             ;
         }
         else
         {
             arbol.agregarHijo(new ArbolGeneral(dominio[nivel]));
             Recorredor recorrerArbol = arbol.Raiz.ListaHijos.Recorredor;
             recorrerArbol.comenzar();
             while (!recorrerArbol.esFin())
             {
                 if (dominio[nivel] == (recorrerArbol.obtenerElemento()).Raiz.Dato.Nombre)
                 {
                     insetarDominioArbol(recorrerArbol.obtenerElemento(), dominio, ++nivel);
                 }
                 recorrerArbol.proximo();
             }
         }
     }
     return(arbol);
 }
예제 #2
0
 //Eliminar la especie, indicada como parametro, del arbol
 public static bool eliminarRecorrido(ArbolGeneral arbol, string[] especieDatos)
 {
     if (arbol.esHoja())
     {
         if (arbol.Raiz.Dato.Nombre == especieDatos[6])
         {
             Console.WriteLine("Especie [{0}] encontrada.", especieDatos[6]);
             return(true);
         }
         return(false);
     }
     else
     {
         Recorredor recorrerArbol = arbol.Raiz.ListaHijos.Recorredor;
         recorrerArbol.comenzar();
         while (recorrerArbol.esFin() == false)
         {
             if (eliminarRecorrido(recorrerArbol.obtenerElemento(), especieDatos))
             {
                 arbol.eliminarHijo(recorrerArbol.obtenerElemento());
             }
             recorrerArbol.proximo();
         }
         if (arbol.Raiz.ListaHijos.tamanioLista == 0)
         {
             return(true);
         }
         return(false);
     }
 }
예제 #3
0
        /// <summary>
        /// El Metodo elimina un hijo de la Lista actual, sin recursión
        /// </summary>
        /// <param name="hijo_a_Eliminar"></param>

        public void eliminarHijo(ArbolGeneral hijo_a_Eliminar)
        {
            try
            {
                Recorredor rec = getHijos().recorrer();
                rec.ObjLista = getHijos();
                rec.comenzar();

                while (!rec.fin())
                {
                    ArbolGeneral unArbol = (ArbolGeneral)rec.elemento();
                    if (unArbol.Equals(hijo_a_Eliminar))
                    {
                        rec.eliminar();
                    }

                    rec.proximo();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Ha ocurrido un error al intentar eliminar un hijo del Arbol");
                Console.WriteLine(e.Message);
                Console.ReadKey();
            }
        }
예제 #4
0
 public static bool existeClase(ArbolGeneral enArbol, string enClase)
 {
     if (enArbol.NivelNodo == 3)
     {
         if (enArbol.Raiz.Dato.Nombre == enClase)
         {
             metBuscarEspecieClase(enArbol);
             return(true);
         }
         return(false);
     }
     else
     {
         Recorredor rec = enArbol.Raiz.ListaHijos.Recorredor;
         rec.comenzar();
         while (!rec.esFin())
         {
             if (existeClase(rec.obtenerElemento(), enClase))
             {
                 return(true);
             }
             rec.proximo();
         }
         return(false);
     }
 }
예제 #5
0
 public static bool existeEspecie(ArbolGeneral enArbol, string especieBusqueda)
 {
     if (enArbol.esHoja())
     {
         if (enArbol.Raiz.Dato.Nombre == especieBusqueda)
         {
             Console.WriteLine("Especie: {0} " +
                               "\n\tMetabolismo: {1}" +
                               "\n\tReproduccion: {2}",
                               especieBusqueda,
                               ((Especie)enArbol.Raiz.Dato).Dato.Metabolismo,
                               ((Especie)enArbol.Raiz.Dato).Dato.Reproduccion);
             return(true);
         }
         return(false);
     }
     else
     {
         Recorredor rec = enArbol.Raiz.ListaHijos.Recorredor;
         rec.comenzar();
         while (!rec.esFin())
         {
             if (existeEspecie(rec.obtenerElemento(), especieBusqueda))
             {
                 return(true);
             }
             rec.proximo();
         }
         return(false);
     }
 }
예제 #6
0
 public static void proCategorias(ArbolGeneral enArbol, int profundidad)
 {
     if (enArbol.esHoja() || enArbol.NivelNodo == profundidad)
     {
         Console.WriteLine("> {0}", enArbol.Raiz.Dato.Nombre);
     }
     else
     {
         Recorredor rec = enArbol.Raiz.ListaHijos.Recorredor;
         rec.comenzar();
         while (!rec.esFin())
         {
             proCategorias(rec.obtenerElemento(), profundidad);
             rec.proximo();
         }
     }
 }
예제 #7
0
 public static void metBuscarEspecieClase(ArbolGeneral enArbol)
 {
     if (enArbol.esHoja())
     {
         Console.WriteLine("\n>Especie: ({0})" +
                           "\n\t>Metabolismo: {1}" +
                           "\n\t>Reproduccion: {2}",
                           ((Especie)enArbol.Raiz.Dato).Dato.Metabolismo,
                           ((Especie)enArbol.Raiz.Dato).Dato.Reproduccion);
     }
     else
     {
         Recorredor rec = enArbol.Raiz.ListaHijos.Recorredor;
         rec.comenzar();
         while (!rec.esFin())
         {
             metBuscarEspecieClase(rec.obtenerElemento());
             rec.proximo();
         }
     }
 }