예제 #1
0
        public string postOrdenNotacion()
        {
            Nodo   arbolCreado = Inicio;
            int    aux = 0, nu1, nu2;
            string res = "", operat, operat2;

            while (arbolCreado != null)
            {
                if (Char.IsNumber(Convert.ToChar(arbolCreado.resultado)) == true)
                {
                    num = new Nodo(arbolCreado.resultado);

                    apilar(num);
                }

                else

                {
                    operat = arbolCreado.ToString();
                    nu1    = Convert.ToInt32(retirar());
                    nu2    = Convert.ToInt32(retirar());
                    switch (operat)
                    {
                    case "/":
                        aux = nu2 / nu1;
                        break;

                    case "*":
                        aux = nu2 * nu1;
                        break;

                    case "-":
                        aux = nu2 - nu1;
                        break;

                    case "+":
                        aux = nu2 + nu1;
                        break;
                    }
                    operat2 = Convert.ToString(aux);
                    num     = new Nodo(operat2);
                    apilar(num);
                }

                arbolCreado = arbolCreado.siguiente;

                if (arbolCreado == null)
                {
                    res = Convert.ToString(retirar());
                }
            }

            inicioPila = null;
            finalPila  = null;
            Inicio     = null;
            return(res);
        }
예제 #2
0
        public string imprimir()
        {
            string Lista = "";
            Nodo   datoc = inicioPila;

            while (datoc != null)
            {
                Lista += datoc.ToString();
                datoc  = datoc.siguiente;
            }

            return(Lista);
        }
예제 #3
0
        private string postOrder(Nodo t)
        {
            string lista = "";

            if (t.Izquierda != null)
            {
                lista += postOrder(t.Izquierda);
            }

            if (t.Derecha != null)
            {
                lista += postOrder(t.Derecha);
            }

            lista += t.ToString();
            return(lista);
        }
예제 #4
0
        private string PreOrder(Nodo t)
        {
            string listas = "";

            listas += t.ToString();

            if (t.Izquierda != null)
            {
                listas += PreOrder(t.Izquierda);
            }

            if (t.Derecha != null)
            {
                listas += PreOrder(t.Derecha);
            }


            return(listas);
        }
예제 #5
0
        private string preOrder(Nodo r)
        {
            string res = "";

            //R
            res += r.ToString();
            //I
            if (r.hiz != null)
            {
                res += preOrder(r.hiz);
            }
            //D
            if (r.hid != null)
            {
                res += preOrder(r.hid);
            }

            return(res);
        }