我有两个表达方式。
仅使用两个运算符:+和*。 (例如:(a + b),(a * b)是有效的表达式)。
我应该编写一个程序来确定这两个表达式是否相等。
示例:
结论:表达式1和2相等。
我有以下迹象:
将这两个表达式放在“产品总和”表单中,对总和的术语进行排序,然后检查表达式是否相等。 我应该使用树结构来完成这个任务:
我已经编写了创建Expression Trees的程序。 我有使用树木的经验。
请你,建议我一个可以解决这个问题的算法吗? 提前谢谢。
答案 0 :(得分:1)
首先需要搜索在添加节点上方有乘法节点的情况。当你发现更换那里的结构,以便添加在顶部。这样做直到你再也找不到任何此类案件为止。
现在,您的树应该看起来像产品的总和。取出每个产品并翻转左右儿童,以便对其进行分类。准确的标准并不重要,但是你应该总是得到像abc这样的产品术语的相同结构(注意,还应该将术语与节点进行比较,并且可以旋转术语,这样可以修复(ab)c和a(bc) )到相同的结构)。完成后,请执行上述添加操作。
对于两个表达式树执行此操作,当您完成后只需比较完全相同的树。