从后缀表达式建立表达式树
来源:互联网 发布:网络前端的发展 编辑:程序博客网 时间:2024/06/17 12:09
怎么想起总结算法了
在一个公司呆久了,不出去看看,你永远不知道你的水平如何,你值多少钱。也就是说,作为一个技术人员,应该每隔4、5个月,出去参加几次面试,看看自己的技术水平有没有和IT圈脱节。但更多的是在寻找更好的机会,找一份更适合自己,待遇更高的工作。 好了,从今天起,每天都总结一个小的数据结构与算法知识,一来扩充自己的知识;二来你懂的。
二叉树的遍历
对于二叉树无非就三种遍历方式:
- 前序遍历;
- 中序遍历;
- 后序遍历;
对于这三种遍历方式,我通过下面这张图来详细的介绍一下我的方法。
- 前序遍历:访问根节点->遍历左子树->遍历右子树
- 中序遍历:遍历左子树->访问根节点->遍历右子树
- 后序遍历:遍历左子树->遍历右子树->访问根节点
对于上图中的二叉树,分别使用三种遍历得到的结果分别是:
- 前序遍历:
A
->C
->D
->G
->H
->S
- 中序遍历:
D
->C
->G
->A
->H
->S
- 后序遍历:
D
->G
->C
->S
->H
->A
二叉树的主要用处之一是在编译器设计领域,如下图所示的二叉树:
这是一个颗表达式树,对这个二叉树进行后续遍历,得到的结果是:a b + c d e + d * *
而这种表达式也叫做后缀表达式,很多时候,我们需要根据后缀表达式重新建立一颗二叉树。下面就使用代码实现这种需求。
从后缀表达式建立表达式树
比如现在有以下一个后缀表达式:a b + c d e + * *
根据这个后缀表达式建立二叉表达式树,算法如下:
1. 依次读取表达式;
2. 如果是操作数,则将该操作数压入栈中;
3. 如果是操作符,则弹出栈中的两个操作数,第一个弹出的操作数作为右孩子,第二个弹出的操作数作为左孩子;然后再将该操作符压入栈中。
这样下去,就可以建立一颗完整的表达式树。
代码简单实现
下面就使用C++代码进行了简单的实现。
定义树节点信息。
创建一个新的节点。
读取表达式,创建表达式树。
文章来源:http://www.jellythink.com/archives/688
0 0
- 从后缀表达式建立表达式树
- 由后缀表达式建立表达式树
- 后缀表达式转变成表达式树
- 后缀表达式转换表达式树
- 【数据结构】后缀表达式-->表达式树
- 后缀表达式建立二叉树并遍历测试
- 表达式树---后缀表达式转中缀表达式
- 表达式树---中缀表达式转后缀表达式
- 后缀表达式树
- 0011从后缀表达式与二叉树的关系
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 【后缀表达式】
- 后缀表达式
- 步进电机S曲线的生成
- 利用FRIDA攻击Android应用程序(二)
- 基于REST架构的Web Service设计
- haproxy+keepalived实现高可用负载均衡
- 海康摄像头+web调用(官方开发包)+手把手全方位扫盲
- 从后缀表达式建立表达式树
- Ueditor 百度编辑器本地保存
- HTML学习---网页编程(一)HTML基础概述。列表、文字等
- 记录opencv249安装过程中的问题
- Python学习笔记4
- Flink 两种发送自定义的timestamp以及watermark的方式
- notes is better than memory装饰者模式
- 数据库索引的实现原理
- 常用网址