0

如何将这两个示例从中缀转换为后缀?

Example 1:
max = (a > b) ? a : b

Example 2:
(a != 0) ? ((b != 0) ? True : False) : False

对于这两种表达方式,我想我只需要删除括号即可。但是,当我尝试从后缀转换回中缀时,表达式无效。我知道如何做简单的操作:

Infix:     (((a + b) * (c + d) + a) * c - 6) * b

Postfix:   a b + c d + * a + c * 6 - b *

...但我不确定如何转换最大和布尔表达式。

4

1 回答 1

0

与其将 '+'、'-' 和 '*' 视为除布尔运算符或 max / min 函数之外的操作,我认为您可以通过简单地说“所有这些都是具有 2 个操作数的运算符 - - 即,它们是二元运算符。”

然后,问题是设置您的表达式树,以便根是运算符('+'、'-'、'max' 或其他),而子项是操作数。产生中缀或后缀只是一个关于如何遍历表达式树的问题。

于 2014-03-15T00:02:44.250 回答