public static void Resuelve <T1>(Arbol <T1> arbolActual, Arbol <T1> padre, Condicion <T1> condicion) { if (arbolActual.Hijos.Count() > 0) { foreach (var hijo in arbolActual.Hijos) { Resuelve(hijo, arbolActual, condicion); } } if (arbolActual.Hijos.Count() == 0 && !condicion(arbolActual.Valor)) { padre.EliminaHijo(arbolActual); } else if (arbolActual.Hijos.Count() > 0 && !condicion(arbolActual.Valor)) { foreach (var hijo in arbolActual.Hijos) { padre.InsertaHijo(hijo, arbolActual); } padre.EliminaHijo(arbolActual); } }
public static void Simplifica <T1>(Arbol <T1> arbolActual, Arbol <T1> padre, Condicion <T1> condicion) { foreach (var hijo in arbolActual.Hijos) { Simplifica(hijo, arbolActual, condicion); } if (!condicion(arbolActual.Valor)) { foreach (var hijo in arbolActual.Hijos) { padre.InsertaHijo(hijo, arbolActual); } padre.EliminaHijo(arbolActual); } }