#include struct Node { char data; Node *left,*right; }; class BinaryTree { private: Node *root; public: BinaryTree(char c, BinaryTree *l,BinaryTree *r); Node *Root() {return root;} Node *Left() {return root->left;} Node *Right() {return root->right;} char RootData() {return root->data;} }; BinaryTree::BinaryTree(char c, BinaryTree *l,BinaryTree *r) { root= new Node; root->data=c; if (l==NULL) root->left=NULL; else root->left=l->root; if (r==NULL) root->right=NULL; else root->right=r->root; } void InOrder(Node *N) { if (N==NULL) return; else if ((N->left==NULL)&&(N->right==NULL)) printf("%c",N->data); else { printf("("); InOrder(N->left); printf("%c",N->data); InOrder(N->right); printf(")"); } } void PostOrder(Node *N) { if (N==NULL) return; else { PostOrder(N->left); PostOrder(N->right); printf("%c ",N->data); } } Node *SetUp() { BinaryTree *a,*b,*c; a=new BinaryTree('a',NULL,NULL); b=new BinaryTree('b',NULL,NULL); c=new BinaryTree('+',a,b); a=new BinaryTree('c',NULL,NULL); b=new BinaryTree('*',c,a); return b->Root(); } main() { Node *N; N=SetUp(); InOrder(N); printf("\n"); PostOrder(N); printf("\n"); return 0; }