表达式树
来源:互联网 发布:网络层的功能 编辑:程序博客网 时间:2024/05/24 04:02
表达式树
在表达式树中,叶子通常是常数值或者变量名,统称为操作数(operands)。而其他非叶子结点则包含各种操作符(operators)。
要构造一个表达式树,首先要将一般的中缀表达式(infix)转换成后缀表达式(postfix)(即逆波兰式)。
例如:
表达式(3-4)*5的逆波兰式为:3 4 – 5 *
表达式3-4*5的逆波兰式为:3 4 5 * -
对于中缀表达式(a+b)*(c*(d+e)),其逆波兰式为ab+cde+**。
结合这个表达式,阐述利用逆波兰式构造表达式树的一般步骤:
在构建表达式树时,我们需要一个堆栈,用于保存树或者结点的指针,记这个堆栈为S。
对逆波兰式进行遍历,如果碰到的是
(1)操作数,那么则建立一个叶子结点,数据为操作数,并将结点指针保存到堆栈中
(2)操作符,那么从堆栈中弹出两个指针,分别为p2和p1.建立一个结点,内容为操作符,然后分别将结点的左右孩子设置为p1和p2,最后将结点指针压入栈
一直重复以上步骤即可。最后堆栈中保存的即是表达式树的根结点指针。
对于中缀表达式(a+b)*(c*(d+e)),其逆波兰式为ab+cde+**,我们现在结合这个表达式,利用图示展示构建过程
0 0
- Lambda表达式表达式树
- 表达式与表达式树
- 表达式和表达式树
- 表达式·表达式树·表达式求值
- 表达式·表达式树·表达式求值
- 表达式树---后缀表达式转中缀表达式
- 表达式树---中缀表达式转后缀表达式
- 表达式树
- 表达式树
- 表达式树
- 表达式树
- 表达式树
- 表达式树
- 表达式树
- 表达式树
- 表达式树
- 表达式树
- 表达式树
- 【翻译自mos文章】How to Set or Switch Oracle Homes on Windows (Doc ID 969581.1)
- poj 3716 贝叶斯公式的应用
- UVA - 127 ``Accordian'' Patience
- crm操作电子邮件
- SharePoint 2010 WebPart Web部件 总贴
- 表达式树
- HDOJ 2002 计算球体积
- opencv——convertTo
- Url传汉字编码解码
- UVA-1339 - Ancient Cipher
- java学习-算法3--费式数列和卡巴斯三角形
- uva 815 - Flooded!(点名要做的思路题~我觉得方法挺好)
- 开源夏令营《基于HackRF开发GPS信号仿真模拟器》工作总结(二)
- Linux下socket最大连接数 ulimit -n 最大值修改