예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
                }
            }
        }