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

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

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

 

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

 

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

 

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

 

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

 

 

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

 

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

 

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

熟悉的可以很快看出

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值