从树的角度理解前缀、后缀、中缀表达式

本文探讨了表达式的前缀、中缀、后缀形式及其与表达式树的关系。通过实例分析了如何通过不同的遍历方式得到相应的表达式形式,并讨论了左右优先级在计算中的应用。

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

要点

  1. 树的遍历有 前序、中序、后序遍历三种方式
  2. 仅有前序+中序,后序+中序两种可以唯一确定一个树
  3. 一个表达式有前缀、后缀、中缀三种表达形式
  4. 一个表达式可以构建表达式树
  5. 一个表达式树有三种树的遍历分别对应三个表达式的表达方式
  6. 仅通过一个表达式可以有不同表达式树,因此其有不同的前缀、后缀表达式

例子

对于一个含有+-*/,()四种运算方式,以及带有括号的一个表达式。
我们将研究其中缀、前缀、后缀表达式

A + B * (C - D) – E / F为例,
其表达式树有两种
在这里插入图片描述
前缀表达式(前序遍历):- + A * B - C D / E F

后缀表达式(后序遍历): A B C D - * + E F / -

在这里插入图片描述

前缀表达式(前序遍历): + A - * B - C D / E F

后缀表达式(后序遍历): A B C D - * E F / - +

进一步思考

几种前缀/后缀表达式都可以用对应的前缀/后缀表达式求和算出结果。

但是我们一般意义上,
对于后缀表达式习惯上使用左优先,即在左边的先算,各类算法书上也一般是左优先求后缀表达式。

左优先体现在:判断的时候,栈顶运算符优先级>=当前运算符优先级弹出。
右优先体现在: 判断的时候,栈顶运算符优先级>当前运算符优先级弹出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值