问题
单项选择题
表达式a*(b+c)-d的后缀表达形式为 。
A.abcd*+--
B.abc+*d-
C.abc*+d-
D.-+*abcd
答案
参考答案:B
解析:
[分析]:
题目要求根据已知的表达式写对应后缀表达式。解这种题,如果考生知道了前缀、中缀、后缀表达式有何关联,有什么特点,那么解题就非常轻松了。其实前缀、中缀、后缀的得名,是从二叉树而来的,也就是把一个表达式转化为一棵二叉树后,对二叉树进行前序遍历得到前缀表达式,对二叉树进行中序遍历得到中缀表达式(也就是一般形式的表达式),对二叉树进行后序遍历得到后缀表达式。
因此,我们只要把表达式转换成二叉树的形式,再对二叉树进行后序遍历,即可得到正确答案。但现在最主要的问题是如何构造这棵树。
构造的规则是这样的,所有的操作数只能在叶子结点上,操作符是它们的根结点,括号不构造到二叉树中去,构造树的顺序要遵循运算的顺序。在表达式a*(b+c)-d中最先计算b+c,所以先构造图4-5的部分。
然后,把b+c的结果与。进行运算,所以有图4-6所示的结果。
最后,把运算结果和d相减,最终得到的二叉树如图4-7所示。
对图4-7的二叉树进行后序遍历得到序列abc+*d-,所以正确答案应是B。