表达式树

数学表达式可以通过表达式树进行图形化描述,表达式树显示了表达式中术语的结构。例如,代数表达式

X + 4 (X + 2)

可以用下面的表达式树表示。

我们可以通过使用对象在Python中复制这个结构。表达式树中的每个节点将由一个对象表示。如果一个节点有其他节点连接到它,那么这些子节点将作为成员变量存储在表示该节点的对象中。例如,表示加法操作的对象将具有两个成员变量left和right,用于存储加法操作的两个操作数。

表达式树对于计算它所表示的表达式很有用。为此,我们为结构中的每个节点配备了一个evaluate(x)函数,该函数将在给定x值的情况下对该节点求值。包含其他节点作为成员变量的节点将首先对结构中节点下面的节点调用evaluate(),然后对返回的结果执行适当的算术,从而进行求值。例如,下面是对象中表示加法的evaluate()方法的代码:

Def evaluate(self,x): a = self.left.evaluate(x) b = self.right.evaluate(x)返回a + b

编程任务

构造一组类,这些类可以表示在上面描述的表达式树中可能遇到的各种节点类型。您将需要为以下类型的节点提供类:

为每个类配备一个适当的__init__方法和一个版本的evaluate(x)方法。

一旦您为这些类编写了代码,编写一个测试程序来组装上面所示的表达式树,然后在x = 2和x = 3处对表达式树求值,并输出这两次求值的结果。

到期日期

这个作业要在10月12日星期四上课前交