pta-数据结构-7-15 jmu-ds-二叉树实现表达式求解 (25 分)

7-15 jmu-ds-二叉树实现表达式求解 (25 分)

用二叉树来表示表达式,树的每一个节点包括一个运算符和运算数。代数表达式中只包含+-*/和一位整数且没有错误。按照先括号,再乘除,后加减的规则构造二叉树。如图所示是"1+(2+3)*2-4/5"代数表达式对应二叉树,用对应的二叉树计算表达式的值。

输入格式:

输入一行表达式字符串,括号内只能有一个运算符。

输出格式:

输出表达式的计算结果.如果除数为0,提示divide 0 error!

输入样例1:

(1+2)*3-4/5+(3-2)

输出样例1:

9.2

输入样例2:

1+2*3-4

输出样例2:

3

这道题不用考虑是否输入了两位数,和括号内只有一个运算符,所以思路较为简单,先将括号里的表达式和'*' 及'/' 转化为单个数字, 用两个栈分别存储运算后的各个数字与+,-顺序。

最后两个栈弹出一个运算符和两个运算数,由于栈的特性会导致运算顺序颠倒如:4-3-2,会先弹出-,2,3,运算结果为1,存入,再弹出-,1,4,运算结果为3,变成了4-(3-2)。因此另设了两个栈来使其顺序正确,先弹出-,4,3,结果为1,再弹出-,1,2,结果为-1

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值