#include #include #include const int _binop=1, _number=5, _variable=6; struct node { int kind; int value; string name; vector sub; node(int k, int v=0, string n="") { kind=k; value=v; name=n; } }; void print(node *n) { if (n==NULL) cout << "NULL!!!"; else if (n->kind == _number) cout << n->value; else if (n->kind == _variable) cout << n->name; else if (n->kind == _binop) { if (n->sub.size() != 2) cout << "ERROR IN +!!!"; else { cout << "("; print(n->sub[0]); cout << n->name; print(n->sub[1]); cout << ")"; } } else cout << "ERROR BAD KIND"; } void main() { // 2*a+4/5/6 node * two = new node(_number, 2); node * a = new node(_variable, 0, "a"); node * left = new node(_binop, 0, "*"); left->sub.push_back(two); left->sub.push_back(a); node * four = new node(_number, 4); node * five = new node(_number, 5); node * leftdiv = new node(_binop, 0, "/"); leftdiv->sub.push_back(four); leftdiv->sub.push_back(five); node * six = new node(_number, 6); node * rightdiv = new node(_binop, 0, "/"); rightdiv->sub.push_back(leftdiv); rightdiv->sub.push_back(six); node * root = new node(_binop, 0, "+"); root->sub.push_back(left); root->sub.push_back(rightdiv); print(root); cout << "\n"; }