Example #1
0
        public void ConstArbolNombres()
        {
            CArbolBinario ArbolB;
            Nodo          SubArbolIzquierdo; //A1
            Nodo          SubArbolDerecho;   //A2
            Nodo          Raiz;              //a

            Stack <Nodo> Pila = new Stack <Nodo>();

            SubArbolIzquierdo = CArbolBinario.NuevoArbol(null, "Maria", null);
            //otra forma
            SubArbolDerecho = new Nodo(null, "Rodrigo", null);

            Raiz = new Nodo(SubArbolIzquierdo, "Esperanza2", SubArbolDerecho);
            Pila.Push(Raiz);

            SubArbolIzquierdo = new Nodo(null, "Anyora", null);
            SubArbolDerecho   = new Nodo(null, "Abel", null);
            Raiz = new Nodo(SubArbolIzquierdo, "MJesus", SubArbolDerecho);

            Pila.Push(Raiz);

            SubArbolDerecho   = Pila.Pop();
            SubArbolIzquierdo = Pila.Pop();
            Raiz = new Nodo(SubArbolIzquierdo, "Esperanza1", SubArbolDerecho);

            ArbolB = new CArbolBinario(Raiz);
        }
 public ArbolDeExpresion()
 {
     ArbolB            = null;
     SubArbolIzquierdo = null;
     SubArbolDerecho   = null;
     Raiz = null;
     Pila = new Stack <Nodo>();
 }
        //expresion == ((a*b)+(c/d))
        public void CrearElArbolDeExpresion(string expresion)
        {
            Nodo subarbolD = null;
            Nodo subarbolI = null;
            Nodo Raiz      = null;

            List <string> ListaExpresiones = ProcesarExpresionEnNodos(expresion);

            Stack <char> PilaNodosInternos = new Stack <char>();

            foreach (string item in ListaExpresiones)
            {
                char[] expA = expresion.ToCharArray();
                if (item.Length == 3)
                {
                    subarbolD = CrearSubArbol(null, expA[2].ToString(), null);
                    subarbolI = CrearSubArbol(null, expA[0].ToString(), null);
                    Raiz      = CrearSubArbol(subarbolD, expA[1].ToString(), subarbolI);
                    Pila.Push(Raiz);
                }

                if (item.Length == 1)
                {
                    PilaNodosInternos.Push(expA[0]);
                }
            }

            for (int i = 0; i < PilaNodosInternos.Count; i++)
            {
                subarbolD = Pila.Pop();
                subarbolI = Pila.Pop();
                Raiz      = CrearSubArbol(subarbolD, PilaNodosInternos.Pop(), subarbolI);;
            }



            //(a*b)+(c/d)
            subarbolD = Pila.Pop();
            subarbolI = Pila.Pop();
            Raiz      = CrearSubArbol(subarbolD, "+", subarbolI);

            ArbolB = new CArbolBinario(Raiz);
        }