class TreeNode {public: // Construtor TreeNode(int& d); // Nó anterior TreeNode* leftPtr; // Nó posterior TreeNode* rightPtr; // Retorna o dado da classe int getData() { return data; };private: // Dado da classe int data;};class Tree {public: // Construtor Tree(); // Insere um nó void insertNode(int value); // Remove um nó void removeNode(int& data); // Caminha por uma árvore void traversal(int flag); TreeNode* search(TreeNode* node, int data);private: // Indica a raiz da árvore TreeNode* rootPtr; void insertNodeHelper(TreeNode** node, int& value); void traversalHelper(TreeNode* node, int order); void removeNodeHelper(TreeNode** node, int data);};enum { ORDER_PREFIX = 0, ORDER_NORMAL, ORDER_POSTFIX,};