Convertir infijo a postfix o prefijo
La entrada de sufijo es: AB + cde + **
- Considera el primer carácter si no es un símbolo, luego crea el nodo agrégalo a la pila
- If chara cter es un símbolo y luego crea un nodo con elementos pop de símbolos y se agrega a la izquierda y a la derecha del símbolo
- Inserta el nodo de símbolo en la pila.
- Repetir 1, 2 y 3 hasta el iterador no tiene más elementos Implementación
Java
public Tree.TreeNode createExpressionTree(){
Iterator<Character>itr = postOrder.iterator();
Tree tree = new Tree();
NodeStack nodeStack = new NodeStack();
Tree.TreeNode node;
while (itr.hasNext()) {
Character c = itr.next();
if(!isDigit(c)){
node = tree.createNode(c);
node.right = nodeStack.pop();
node.left = nodeStack.pop();
nodeStack.push(node);
}else{
node = tree.creteNode(c);
nodeStack.push(node);
}
}
node = nodeStack.pop();
return node;
}
Más información: http://en.wikipedia.org/wiki/Binary_expression_tree
Puede implementar una solución utilizando el algoritmo de yarda de derivación. Aquí hay algunos detalles sobre wikipiedia:. Este algo fue inventado por Edsger Dijkstra, es una muy buena alternativa.Si necesita algunos detalles, puedo publicar un ejemplo de código que escribí en C# hace algún tiempo, pero supongo que el enlace de wikipedia es más que suficiente. –