如何解决如何在内存中表示数学表达式
我和我的朋友们正在尝试实现一个计算机代数系统。
我们已经实现了一个算法,将像 1+2*4 这样的表达式转换成二叉树
+
/ \
1 *
/ \
2 4
我们实现了一种算法来评估这种二叉树。
我们现在想要实现一个算法来简化带有变量的表达式。
例如,x+2x 将变成 3x
我认为在二叉树中合并类似的运算符会更容易。例如:
+
/ \
a +
/ \
b c
将成为
+
/ | \
a b c
这样可以更容易地找到可以简化的术语。
例如,如果我的表达式中有 x+2x+3x,那么它们将在同一个 + 运算符下,因此它们可以更容易地找到彼此,而无需遍历树的大部分。
我的朋友认为我们应该用不同的方法实现树。他建议我们把每个节点都实现为一个多项式,然后我们可以在节点之间进行多项式加法等操作。使用这种方法,我们可以更轻松地进行多项式之间的运算,而无需在树中来回走动。
我们应该选择哪种方法?除了这两个之外还有更好的方法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。