public static void calcularArbol(Nodo actual) { if (ServicioSepararStrings.esOperadorChar(actual.getDato()) && ServicioSepararStrings.esOperadorChar(actual.getIzq().getDato())) { calcularArbol(actual.getIzq()); } else { if (ServicioSepararStrings.esOperadorChar(actual.getDer().getDato())) { calcularArbol(actual.getDer()); } else { String[] operacion = new String[3]; operacion[0] = actual.getIzq().getDato(); operacion[1] = actual.getDato(); operacion[2] = actual.getDer().getDato(); actual.setDer(null); actual.setIzq(null); actual.setDato(Convert.ToString(ServicioSepararStrings.realizarOperacion(operacion))); } } if (actual.getDer() != null && actual.getIzq() != null) { calcularArbol(actual); } }
public static void crearArbol(Nodo actual) { if (ServicioSepararStrings.tieneParentesisExternos(actual.getDato())) { //Quita los parentesis del actual if (ServicioSepararStrings.esFormulaAtomica(actual.getDato())) { if (ServicioSepararStrings.tieneParentesisCompletos(actual.getDato())) { actual.setDato(ServicioSepararStrings.quitarParentesisExternos(actual.getDato())); } //Encuentra el operador central int operadorCentral = ServicioSepararStrings.encontrarOperadorCentral(actual.getDato()); String[] cadenas = ServicioSepararStrings.separarCadenasOperadorCentral(actual.getDato(), operadorCentral); Nodo izq = new Nodo(cadenas[0]); actual.setDato(cadenas[1]); Nodo der = new Nodo(cadenas[2]); actual.setIzq(izq); actual.setDer(der); return; } else { actual.setDato(ServicioSepararStrings.quitarParentesisExternos(actual.getDato())); int operadorCentral = ServicioSepararStrings.encontrarOperadorCentral(actual.getDato()); String[] cadenas = ServicioSepararStrings.separarCadenasOperadorCentral(actual.getDato(), operadorCentral); Nodo izq = new Nodo(cadenas[0]); actual.setDato(cadenas[1]); Nodo der = new Nodo(cadenas[2]); actual.setIzq(izq); actual.setDer(der); crearArbol(izq); crearArbol(der); } } }