下列中缀表达式的后缀表达式。

来源:百度知道 编辑:UC知道 时间:2024/07/05 19:30:18
下列中缀表达式的后缀表达式。
(A+B)*D+E/(F+A*D)+C

是什么呀
请哪个帮帮
为什么不是ABD+*而是AB+D*呢?
就这里不懂,请哪位说说.谢谢.

AB+D*EFAD*+/+C+
后缀表达式的介绍:http://mail.ustc.edu.cn/~goly420/houzhui.htm
主要的转换思路,就是按照四则混合运算的顺序,把每一步的计算
由:“操作数1 运算符 操作数2”的顺序 <改写成> ”操作数2 运算符 操作数1“
然后不断继续转换

是AB+D*的原因,其实可以看成是(AB+)D*,分两步做
就是把(A+B)先转化为后缀式AB+,并把结果看成一个数x。
原式就成了x*D再转化就是XD*。
总结起来就是AB+D*了

AB+D*EFAD*+/+C+

AB+D*EFAD*+/+C+
可现建立一个运算树,左右结点为左右运算数,根为运算符,如果运算数是表达式,则为表达式的运算树为子数。然后后序遍历该树得到。
举个简单的例子
a+b*(c+d/e)
先算的d/e根为"/",子结点为d,e
然后算c+d/e,根为“+”,左右子结点为e和上面的子树
b*(c+d/e)根为"*",作子树为b,右子树为(c+d/e)的树
最后a为右结点,"+"为根,左子树为刚才得到的树。
该树后序遍历即得。