如何在内存中表示数学表达式

问题描述

我和我的朋友们正在尝试实现一个计算机代数系统。
我们已经实现了一个算法,将像 1+2*4 这样的表达式转换成二叉树

  +
 / \
1   *
   / \
  2   4

我们实现了一种算法来评估这种二叉树。
我们现在想要实现一个算法来简化带有变量的表达式。
例如,x+2x 将变成 3x
我认为在二叉树中合并类似的运算符会更容易。例如:

  +  
 / \  
a   +  
   / \  
   b  c  

将成为

   +
 / | \  
a  b  c

这样可以更容易地找到可以简化的术语。
例如,如果我的表达式中有 x+2x+3x,那么它们将在同一个 + 运算符下,因此它们可以更容易地找到彼此,而无需遍历树的大部分。

我的朋友认为我们应该用不同的方法实现树。他建议我们把每个节点都实现为一个多项式,然后我们可以在节点之间进行多项式加法等操作。使用这种方法,我们可以更轻松地进行多项式之间的运算,而无需在树中来回走动。

我们应该选择哪种方法?除了这两个之外还有更好的方法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)