表达式 a*(b+c)-d 的后缀表达式?

来源:百度知道 编辑:UC知道 时间:2024/05/17 18:15:39
请一步一步的说!!!

表达式 a*(b+c)-d是中缀表达式,转化成二叉树后,它是中序遍历的结果
二叉树如下图:
______(-)_________
_____/___\________
____(*)__(d)______
____/__\__________
__(a)__(+)________
______/___\_______
____(b)___(c)_____
后缀表达式,就是后序遍历该二叉树,所得到的序列,也就是:abc+*d-
同样的道理,前缀表达式是前序遍历二叉树,所得到的序列,是:-*a+bcd

首先输出A(因为不是运算符),然后把*储存到栈中,然后遇到(,他比*的优先级高,所以压入栈,再输出B,然后遇到+,同样他比(的优先级高,继续压入栈,然后输出C,再遇到),他的优先级比+低,所以将+出栈,并输出+,然后再与(进行比较,两个优先级一样,将(直接出栈,再遇到-运算符,他的优先级比*低,所以将*出栈,并输出*,然后将-入栈,现遇到D,直接输出,然后将-输出,所以最后的结果就是ABC+*D-