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