前缀表达式转中缀表达式

假定有前缀表达式++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

原文地址:https://www.cnblogs.com/fangzm/p/13945052.html