用二叉树判断逆波兰表达式

    逆波兰表达式又叫做后缀表达式。

逆波兰表达式是一种十分有用的表达式,它将复杂表达式转换为可以依靠简单的操作得到计算结果的表达式。例如(a+b)*(c+d)转换为ab+cd+*

 

一般对逆波兰表达式的计算都是通过入栈和出栈实现,网上例子蛮多的。

 

我来分析一下用2叉树来计算逆波兰表达式(后缀表达式);

 

X=(A+B)*(C-D/E)这样一个表达式,求它的后缀表达式该怎样处理呢。

 

可以先画出表达式对应的2叉树,操作数作为叶子节点,操作符作为非叶子节点,具体规则不细说,看着两个图。

 

 

                   =
                    /  /
                   X   *
                      /  /
                     +    -
                    / /   / /
                   A  B C  /
                             / /
                            D   E 

 

ps:希望格式不上传后不会改变。

 

这样一颗2叉树,其对应的后缀表达式,其实就是它对应的后序遍历的结果,后续遍历不多说了。

熟悉的可以很快看出

逆波兰表达式为:XAB+CDE/-*=

 

你可能感兴趣的:(c)