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); }