当前位置: 首页 > news >正文

数据结构中公式前中后缀表达式-二叉树应用

目录

数据结构中公式前中后缀表达式-二叉树应用


数据结构中公式前中后缀表达式-二叉树应用

什么是前缀表达式、中缀表达式、后缀表达式

前缀表达式、中缀表达式、后缀表达式,是通过树来存储和计算表达式的三种不同方式

以如下公式为例

 

通过树来存储该公式,可以表示为


那么问题就来了,树只是一种抽象的数据结构,它必须要通过某个形式的文本来才能存储和输入

 

此时,就有了三种表示方法:前缀表达式、中缀表达式、后缀表达式

它们分别相当于树的前序遍历、中序遍历、后序遍历,前中后指的是遍历时符号的遍历顺序

前序遍历:符号 - 左操作数 - 右操作数

中序遍历:左操作数 - 符号 - 右操作数

后序遍历:左操作数 - 右操作数 - 符号

中缀表达式

上面的公式,中序遍历的结果为

 

显然,这种表达方式是有歧义的,比如ab是一颗子树,cd是一颗子树,最后相减,遍历结果和上面是一样的

所以中缀表达式必须借助括号,才能正确地表达出想要的结果

中缀表达式的表示结果为

 

这种表达方式,符合人类的阅读习惯

前缀表达式

上面的公式,先序遍历的结果为

 

这种表达方式是没有歧义的,可以直接作为前缀表达式的结果

这种表达方式,符合计算机的处理习惯,程序可以很容易地解析这种表达式

具体如何解析,下面会给出代码

后缀表达式

上面的公式,后序遍历的结果为

 

这种表达方式,也符合计算机的处理习惯,解析也很简单

相对于前缀表达式来说,后缀表达式的符号读取顺序,和人类阅读习惯是一致的

因此实际计算机程序中,基本都是用后缀表达式来存储公式的,前缀表达式效果次之

对于中缀表达式,我们则可以先将其转为后缀表达式,再进行求值

http://www.lryc.cn/news/125736.html

相关文章:

  • Visual Studio 2022连接远程系统进行C/C++开发
  • TiDB数据库从入门到精通系列之二:TiDB数据库的简介
  • opencv视频截取每一帧并保存为图片python代码CV2实现练习
  • 虹科方案 | 汽车总线协议转换解决方案(二)
  • [Android] 通过JNI 让 JAVA 调用 android native 接口
  • MySQL高可用MHA
  • DoIP学习笔记系列:(五)“安全认证”的.dll从何而来?
  • 205、仿真-51单片机直流数字电流表多档位切换Proteus仿真设计(程序+Proteus仿真+原理图+流程图+元器件清单+配套资料等)
  • 服务器如何防止cc攻击
  • 解读注解@Value占位符替换过程
  • 浅谈5G技术会给视频监控行业带来的一些变革情况
  • Java常用API---快速达到Java工作水准系列(1)
  • Python中使用隧道爬虫ip提升数据爬取效率
  • 深入源码分析kubernetes informer机制(四)DeltaFIFO
  • UI设计师个人工作总结范文
  • explicit关键字 和 static成员
  • 安装Linux操作系统CentOS 6详细图文步骤
  • 新增守护进程管理、支持添加MySQL远程数据库,支持PHP版本切换,1Panel开源面板v1.5.0发布
  • 十、接口(1)
  • percentile_approx 聚合函数
  • 面试热题(全排列)
  • 一文走进时序数据库性能测试工具 TSBS
  • 通俗讲解-动量梯度下降法原理与代码实例
  • 【【STM32-USART串口协议】】
  • vue3.0组件通信
  • 费曼学习法
  • Kubernetes介绍和部署,使用
  • 视频汇聚平台EasyCVR视频监控播放平台WebRTC流地址无法播放的问题解决方案
  • node.js 基础高并发案例
  • OpenCV实例(八)车牌字符识别技术(二)字符识别