问题
单项选择题
表达式()对应的逆波兰式是“ab+-c/d-”。
A.a-b-c/d
B.-(a+b)/c-d
C.-a+b/c-d
D.(a+b)/(-c-d)
答案
参考答案:B
解析:
一个表达式可用一棵二叉树表示,其中的叶子节点表示操作数,内部节点表示操作符或中间结果,根节点表示整个表达式的值。对此二叉树分别进行前序、中序和后序遍历恰好为表达式的前缀表示(波兰式)、中缀表示和后缀表示(逆波兰式)。其中,表达式的前缀和后缀表示均可以将表达式中的括号省去而不影响计算次序和结果。
表达式的逆波兰表示也就是后缀表示,它将运算符号写在运算对象的后面,并指明其前面的操作数或中间结果所要执行的运算。对后缀表达式从左到右求值,则每当扫描到一个运算符号时,其操作数是最近刚得到的。因此“ab+-c/d-”表示先将a与b相加,然后进行一元“-”运算,结果除以c,除运算的商再与d相减,即对应的表达式为“-(a+b)/c-d”。