树表达式 - 节点设置

时间:2016-07-18 14:48:28

标签: c++ tree binary-tree mathematical-expressions

我对我为一门课程学习的项目感到困惑。 我必须构建一个树表达式,我知道算法是如何工作的,但我在设置节点时遇到了困难。

教师给了我们这个类:Expression Node 它有2个其他子类:常量节点和操作员节点?

并在“表达式树类”中:我在哪里构建树表达式?我有一个这种类型的堆栈:表达式节点

我的问题是:在我分配一个运算符或一个常量之后,我怎么能把它推到堆栈,因为类型不同。

我正在使用C ++ 谢谢。

2 个答案:

答案 0 :(得分:1)

应用多态:将指针(或引用)推送到节点。 由于您的堆栈包含“ExpressionNode”类型的元素,因此它可以接受从它派生的所有类型(常量和运算符)。

答案 1 :(得分:0)

如果您有权访问boost,那么boost :: variant就是您的目标。 参见this,它是工会的OO版本。

头文件

#include <boost/variant.hpp>

stack<boost::variant<int,char>> s;
s.push('+');
s.push(1);