前缀表达式转中缀表达式
假定有前缀表达式++1*2 3 4 请将它转化为中缀表达式。
利用表达式树:
1.从右到左扫面后缀表达式,一次一个符号读入表达式。
2. 如果符号是操作数,那么就建立一个单节点树并将它推入栈中。如果符号是操作符,那么就从栈中弹出两个树T1和T2(T1先弹出)并形成一颗新的树,该树的根就是操作符
3.它的左、右儿子分别是T1和T2(先出的为左子树,后出的为右子树)。然后将指向这棵新树的指针压入栈中。
1.从右开始都是操作数 4 3 2 放入栈中
2. 遇到操作符 *,取栈中两个元素,先出为左,后出为右如下:
3.操作数1 放入栈中
4.遇到操作符 +,去栈中两个元素,先出为左,后出为右
5.遇到操作符 + 取两个元素,先出为左,后出为右
对上面构造的表达式树,按中序遍历如下:
中缀表达式为:1+2*3+4