后缀表达式和中缀表达式的转换

本文详细介绍了后缀表达式的概念,以及如何通过构建表达式树并进行后序遍历来转换中缀表达式到后缀表达式。同时,文章对比了中缀、前缀和后缀表达式的不同,并提供了具体的转换实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

何为后缀表达式

不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:(2 + 1) * 3 , 即2 1 + 3 *

很好理解,就是一个符号只对其前面两个数作用

后缀表达式和中缀表达式的转换

如A+B*(C−D)−E/F

这是怎么搞出来的呢??

选最靠中的那个优先级最低的符号开始(±),把算数式分为2个部分,若符号数大于二,树的左儿子是左边的符号,右儿子是右边的符号,若符号不够两个,那么就把数字或字母放在相应的位置。然后又在这两个部分里进行同样的操作。

然后,树建好之后,对它进行一次后序遍历,将每个节点的值写出即可。

什么是后序遍历?就是先遍历左子树,再遍历右子树,最后遍历根节点的一种遍历顺序。

相应的有:

中序遍历(先遍历左子树,然后访问根结点,最后遍历右子树),可以得到相应的中缀表达式(就是一般算数式)

前序遍历(先访问根结点然后遍历左子树,最后遍历右子树),前缀表达式(将运算符写在前面,操作数写在后面的表达式,也叫波兰式)

于是A+B*(C−D)−E/F的后缀表达式就是ABCD-*+EF/-

前缀表达式就是-+A*B-CD/EF(前缀表达式在不确定中缀表达式的情况下不唯一)

当中缀表达式和前缀表达式确定时才可以确定后缀表达式,同理,当中缀表达式和后缀表达式确定时才可以确定前缀表达式

还有一种用栈的方式,直接给链接了:

原表达式转换为后缀表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AndrewMe8211

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值