#ifndef TREE_HEADER
#define TREE_HEADER

#include "Common.h"

typedef enum {nt_operation, nt_number, nt_var} NodeType;

#define OPERATION_PLUS 1
#define OPERATION_MINUS 2
#define OPERATION_MUL 3
#define OPERATION_DIV 4
#define OPERATION_INC 5

typedef 
	struct __node
	{
		NodeType type;
		int value;
		struct __node *left, *right;
	} Node;
	
typedef Node* Tree;

Node* CreateNode(NodeType type, int value, Node *left, Node *right);
Node* SimpleNode(NodeType type);
Node* ValueNode(NodeType type, int value);

int Calculate(Tree tree, int *values);

#endif
