#include <iostream>
#include <conio.h>
using namespace std;
struct node
{
int num;
node *lLink;
node *rLink;
};
void createNode(node *&root);
void connectNode(node *newNode,node *current);
void preOrder(node *current);
void menu(int& choice);
main()
{
int choice;
int num;
node *root;
node *parent;
node *current;
node *sNode;
node *temp;
root = NULL;
do
{
menu(choice);
switch(choice)
{
case 1:
createNode(root);
getch();
break;
case 2:
cout<<"Pre-order Traversal"<<endl<<endl;
preOrder(root);
getch();
break;
}
}while(choice!=24);
}
void menu(int& choice)
{
system("cls");
cout<<"[1] Add New Node"<<endl
<<"[2] Display"<<endl;
cout<<"Enter your choice:";
cin>>choice;
}
void createNode(node* &root)
{
node *newNode;
int num;
newNode=new node;
newNode->lLink=NULL;
newNode->rLink=NULL;
cout<<"Enter number:";
cin>>num;
newNode->num=num;
if(root==NULL){root=newNode;cout<<"root";}
else connectNode(newNode,root);
}
void connectNode(node *newNode,node *current)
{
if(newNode->num > current->num)
{
if(current->rLink!=NULL)
{
cout<<"Move to the right of "<<current->num<<endl;
connectNode(newNode,current->rLink);
}
else
{
current->rLink=newNode;
cout<<newNode->num<<" is connected to the right of "<<current->num<<endl;
}
}
else
{
if(current->lLink!=NULL)
{
cout<<"Move to the left of "<<current->num<<endl;
connectNode(newNode,current->lLink);
}
else
{
current->lLink=newNode;
cout<<newNode->num<<" is connected to the left of "<<current->num<<endl;
}
}
}
void preOrder(node* current)
{
if(current->lLink!=NULL)
cout<<current->num<<" has a left child of "<<current->lLink->num<<endl;
else cout<<current->num<<" has no left child."<<endl;
if(current->rLink!=NULL)
cout<<current->num<<" has a right child of "<<current->rLink->num<<endl;
else cout<<current->num<<" has no right child."<<endl;
//cout<<current->num <<" ";
if(current->lLink!=NULL)preOrder(current->lLink);
if(current->rLink!=NULL)preOrder(current->rLink);
}



