数据结构中公式前中后缀表达式-二叉树应用
什么是前缀表达式、中缀表达式、后缀表达式
前缀表达式、中缀表达式、后缀表达式,是通过树来存储和计算表达式的三种不同方式
以如下公式为例
通过树来存储该公式,可以表示为
那么问题就来了,树只是一种抽象的数据结构,它必须要通过某个形式的文本来才能存储和输入
此时,就有了三种表示方法:前缀表达式、中缀表达式、后缀表达式
它们分别相当于树的前序遍历、中序遍历、后序遍历,前中后指的是遍历时符号的遍历顺序
前序遍历:符号 - 左操作数 - 右操作数
中序遍历:左操作数 - 符号 - 右操作数
后序遍历:左操作数 - 右操作数 - 符号
中缀表达式
上面的公式,中序遍历的结果为
显然,这种表达方式是有歧义的,比如ab是一颗子树,cd是一颗子树,最后相减,遍历结果和上面是一样的
所以中缀表达式必须借助括号,才能正确地表达出想要的结果
中缀表达式的表示结果为
这种表达方式,符合人类的阅读习惯
前缀表达式
上面的公式,先序遍历的结果为
这种表达方式是没有歧义的,可以直接作为前缀表达式的结果
这种表达方式,符合计算机的处理习惯,程序可以很容易地解析这种表达式
具体如何解析,下面会给出代码
后缀表达式
上面的公式,后序遍历的结果为
这种表达方式,也符合计算机的处理习惯,解析也很简单
相对于前缀表达式来说,后缀表达式的符号读取顺序,和人类阅读习惯是一致的
因此实际计算机程序中,基本都是用后缀表达式来存储公式的,前缀表达式效果次之
对于中缀表达式,我们则可以先将其转为后缀表达式,再进行求值