class TreeNode { public: Object obj; TreeNode *leftChild; TreeNode *rightChild; private: Object getObject() { return obj; } TreeNode* getleftChild() { return leftChild; } TreeNode* getRightChild() { return rightChild; } void inOrderPrint() { if(leftChild != null) leftChild.inOrderPrint(); obj.print(); if(rightChild != null) rightChild.inOrderPrint(); } } class Tree { private: TreeNode *root; public: TreeNode* getRoot() {return root}; void inOrderPrint() {root.inOrderPrint()}; }; ... Tree *t = ...; //insertions t->inOrderPrint();