1. Create the binary tree with 9 nodes (Figure 1) by using pointer-based representation. struct TreeNode { int info; TreeNode * left; TreeNode * right; } 2. Implement pre-order, in-order, and post-order traversals, and print the results of the tree The pre-order transversal looks like this: 2 7 2 6 5 11 5 9 4 The in-order transversal looks like this: 2 7 5 6 11 2 5 4 9 The post-order transversal looks like this: 2 5 11 6 7 4 9 5 2 Solution Here is the code for you: #include #include #include typedef struct node { int info; struct node *left; struct node *right; } node; void insert(node **,int); void preorder(node *); void postorder(node *); void inorder(node *); int main() { node *root; int ch,ele; root=NULL; while(1) { printf(\"TREE OPERATIONS\ \"); printf(\"1.INSERT\ \"); printf(\"2.INORDER\ \"); printf(\"3.PREORDER\ \"); printf(\"4.POSTORDER\ \"); printf(\"5.EXIT\ \"); printf(\"Enter your choice: \"); scanf(\"%d\",&ch); switch(ch) { case 1: printf(\"Enter the element you want to insert: \"); scanf(\"%d\",&ele); insert(&root,ele); break; case 2: inorder(root); break; case 3: preorder(root); break; case 4: postorder(root); break; case 5: exit(0); default: printf(\"Invalid Choice. Please enter a valid choice.\ \"); } } } void insert(node **root, int ele) { node *temp,*x,*y; x=y=*root; temp= (node *)malloc(sizeof(node)); temp->info=ele; temp->left = temp->right = NULL; while(x!=NULL) { y=x; if(ele < x->info) x = x->left; else x = x->right; } if(y == NULL) *root=temp; else if(ele < y->info) y->left = temp; else y->right = temp; } void inorder(node *root) { if(root != NULL) { inorder(root->left); printf(\"%d \",root->info); inorder(root->right); } } void preorder(node *root) { if(root != NULL) { printf(\"%d \",root->info); inorder(root->left); inorder(root->right); } } void postorder(node *root) { if(root != NULL) { inorder(root->left); inorder(root->right); printf(\"%d \",root->info); } }.