逆波兰表达式又叫做后缀表达式。
逆波兰表达式是一种十分有用的表达式,它将复杂表达式转换为可以依靠简单的操作得到计算结果的表达式。例如(a+b)*(c+d)转换为ab+cd+*
一般对逆波兰表达式的计算都是通过入栈和出栈实现,网上例子蛮多的。
我来分析一下用2叉树来计算逆波兰表达式(后缀表达式);
X=(A+B)*(C-D/E)这样一个表达式,求它的后缀表达式该怎样处理呢。
可以先画出表达式对应的2叉树,操作数作为叶子节点,操作符作为非叶子节点,具体规则不细说,看着两个图。
=
/ /
X *
/ /
+ -
/ / / /
A B C /
/ /
D E
ps:希望格式不上传后不会改变。
这样一颗2叉树,其对应的后缀表达式,其实就是它对应的后序遍历的结果,后续遍历不多说了。
熟悉的可以很快看出
逆波兰表达式为:XAB+CDE/-*=