#include <iostream>
using namespace std;
struct node
{
node* leftchild;
node* rightchild;
int data;
};
int count;
node* insert(node*ptr,int x)
{
if(ptr==NULL)
{
node* temp= new node;
temp->leftchild=NULL;
temp->rightchild=NULL;
temp->data=x;
ptr=temp;
count++;
}
else if(count%2==0)
ptr->leftchild=insert(ptr->leftchild,x);
else
ptr->rightchild=insert(ptr->rightchild,x);
return ptr;
}
void preorder(node* root)
{
if(root!=NULL)
{
cout<<root->data<<endl;
preorder(root->leftchild);
preorder(root->rightchild);
}
}
void inorder(node *root)
{
if (root!= NULL)
{
inorder(root->leftchild);
cout<<root->data<<endl;
inorder(root->rightchild);
}
}
void postorder( node *root)
{
if (root != NULL)
{
postorder(root->leftchild);
postorder(root->rightchild);
cout<<root->data<<endl;
}
}
int main()
{
count=0;int x;
node* root=NULL;
char ch='y';
while(ch!='n')
{
cout<<"Enter the element:";
cin>>x;
root=insert(root,x);
cout<<"Do you want to enter more elements? y/n";
cin>>ch;
}
cout<<"Preorder traversal:";
preorder(root);
cout<<"Inorder traversal:";
inorder(root);
cout<<"Postorder traversal";
postorder(root);
}