二叉树遍历和前缀后缀表达式

十进制转二进制(小数部分)

十进制:0.25转二进制过程(每一次乘2,那么整数部分)

① 0.25 * 2 = 0.5 -> 0

② 0.5 * 2 = 1.0 -> 1

∴ 十进制数0.25的二进制数为0.01

二进制数:101.101转十进制

位数(每个位置的数)      1       0       1       .       1       0       1

                          2^2     2^1     2^0     .       2^(-1)  2^(-2)  2^(-3)

位值(每个位置的权值)    4       2       1       .       0.5     0.25    0.125

                    4*1 + 2*0 + 1*1 + (.) + 0.5*1 + 0*0.25 + 1*0.125 = 十进制数

2^(-1) = 1 / 2^1 = 1 / 2 = 0.5

2^(-2) = 1 / 2^2 = 1 / 4 = 0.25

前、中、后缀表达式:

1. 中缀表达式转换为其他两种

方法:

    首先按照运算符的优先级对所有的运算单位加括号

    转前缀则将符号移动到对应括号之前

    转后缀则将符号移动到对应括号之后

转换过程

中缀表达式为:a + b * c - ( d + e )

    使用按照运算符的优先级对所有的运算单位加括号

    操作完成后式子变成: ( ( a + ( b * c ) ) - ( d + e ) )

    中缀表达式转前缀表达式:

    1)将运算符移动到对应括号之前:- ( + ( a * ( b c ) ) + ( d e ) )

    2)去掉括号:- + a * b c + d e

    3)转换完成

    中缀表达式转后缀表达式:

  1. 将运算符移动到对应括号之后:( ( a ( b c ) * ) + ( d e ) + ) -
  2. 去掉括号:a b c * + d e + -
    3)转换完成

2. 前缀表达式转中缀表达式

方法:

    从后向前遍历前缀表达式,如果遇到运算符,将其与后面两个操作数相结合,并在外层加上括号,当做一个新的运算符。

    遍历完成后,将运算符移动到括号内的操作数中间。

    去掉不影响运算的括号。

转换

前缀表达式为:- + a * b c + d e

    从后向前遍历遇到运算符,与后面两个结合,外层套括号,当做新的运算符。操作完成后,表达式变为:( - ( + a ( * b c ) ) ( + d e ) )

    将运算符移动到括号内操作数中间,操作完成后,表达式变为:( ( a + ( b * c ) ) - ( d + e ) )

    去掉多余括号后,表达式变为:a + b * c - ( d + e)

3. 后缀表达式转中缀表达式

方法:

    从前向后遍历后缀表达式,如果遇到运算符,将其与前面两个操作数相结合,并在外层加上括号,当做一个新的运算符。

    遍历完成后,将运算符移动到括号内的操作数中间。

    去掉不影响运算的括号。

转换

后缀表达式为:a b c * + d e + -

    从前向后遍历遇到运算符,与前面两个结合,外层套括号,当做新的运算符。操作完成后,表达式变为:( ( a ( b c * ) + ) ( d e + ) - )

    将运算符移动到括号内操作数中间,操作完成后,表达式变为:( ( a + ( b * c ) ) - ( d + e ) )

    去掉多余括号后,表达式变为:a + b * c - ( d + e)

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值