c# 如何转化后置运算

来源:百度知道 编辑:UC知道 时间:2024/05/17 08:23:50
如题:例如
8*(9/3-1)如果转成后置运算

用二叉树

把这个式子储存进一个二叉树里面,树叶为数字,符号为内节点,然后用后序访问方法读出,就可以实现后置运算,前置运算则用先序访问方法读出

如图二叉树

*
8 -
/ 1
9 3

用后序算法读出为8 9 3 / 1 - *

关于如何将这个中序式子放入二叉树

遇到数字,建一节点,遇到符号,则将先前的节点树变成符号节点的左子树,遇到括号,分两种情况,括号在一开始,则忽略,在式子中间,则将其放在符号的右子树。

我这个做法不单单为了实现后置算法,还可以写出前置运算,还有等等排序。