数据结构的知识点——表达式

本文详细介绍了前缀、中缀及后缀表达式的概念及其相互转换的方法。重点讲解了后缀表达式(逆波兰式)的特点及如何利用栈进行转换,并通过二叉树验证结果的正确性。

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

1.理解概念

  1. 前缀表达式
  2. 中缀表达式
  3. 后缀表达式(逆波兰式)

中缀表达式:供我们高级动物人类所使用;

前缀表达式,后缀表达式 :供计算机所使用

2. 乱谈『后缀』和『前缀』表达式

后缀表达式从左向右解析
前缀表达式从右向左解析

这里强调一下:由于 运算符的优先级可能相同,则导致 这些表达式并不一定唯一


2.1 后缀表达式

后缀表达式 又被称为:『逆波兰式』

后缀表达式,指的是不包含括号,运算符放在两个运算对象的后面,严格从左向右进行, 所有的计算按运算符出现的顺序,(无需考虑运算符的优先规则)

后缀表达式使计算机从左到右扫描,根据操作数和操作符的出现顺序直接就可以得到最后的正确结果。(无需考虑运算符的优先级关系,一切都在『酒』里…)

2.2 前缀表达式

前缀表达式,指的是不包含括号,运算符放在两个运算对象的前面,严格从右向左进行,所有的计算按运算符出现的顺序(无需考虑运算符的优先规则)

可以看出, 前缀表达式后缀表达式 的唯一区别: 方向不同

  1. 后缀表达式从左向右( ---->)
  2. 前缀表达式从右向左(<----)

3. 相互转换

中缀表达式 转化为 后缀表达式 or 前缀表达式,都必须借助于 栈(2个) 来实现。

4. 验证结果的正确性

我们可以将表达式转化为二叉树,来通过前序遍历 或者 后序遍历 来验证转换结果是否正确。

  1. 表达式和二叉树转换

需要注意的是,二叉树 还原为中缀表达式的操作: 中序遍历,且每当遍历到运算符时,都要加上括号来保证优先级的正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值