Hi All,

I was trying to edit a code so that it could insert nodes into a binary tree. Every time the user inserts, there will prompt a line asking to insert to the left child or the right child. Could anyone show me what's wrong with my code(you can see to the insert func)? It doesn't yield the correct result.

Thanks in advance.


#include<iostream>
//#include<stdio>
// #include<stdlib>
using std::cin;
using std::cout;
using std::endl;
struct node
{
int data;
node *left;
node *right;
};

node *tree=NULL;
node *insert(node *tree,int ele);

void preorder(node *tree);
void inorder(node *tree);
void postorder(node *tree);
int count=1;

int main()
{
//clrscr();
int ch,ele;
do
{
//clrscr();
cout<<"\n\t\a\a1----INSERT A NODE IN A BINARY TREE.\a\a";
cout<<"\n\t\a\a2----PRE-ORDER TRAVERSAL.\a\a";
cout<<"\n\t\a\a3----IN-ORDER TRAVERSAL.\a\a";
cout<<"\n\t\a\a4----POST-ORDER TRAVERSAL.\a\a";
cout<<"\n\t\a\a5----EXIT.\a\a";
cout<<"\n\t\a\aENTER CHOICE::\a\a";
cin>>ch;
switch(ch)
{
case 1:
cout<<"\n\t\a\aENTER THE ELEMENT::\a\a";
cin>>ele;
tree=insert(tree,ele);
break;

case 2:
cout<<"\n\t\a\a****PRE-ORDER TRAVERSAL OF A TREE****\a\a";
preorder(tree);
break;

case 3:
cout<<"\n\t\a\a****IN-ORDER TRAVERSAL OF A TREE****\a\a";
inorder(tree);
break;

case 4:
cout<<"\n\t\a\a****POST-ORDER TRAVERSAL OF A TREE****\a\a";
postorder(tree);
break;

case 5:
break;
}
}while(ch!=5);
return 0;
}

node *insert(node *tree,int ele)
{
char ch;
if(tree==NULL)
{
tree=new node;
tree->left=NULL;
tree->right=NULL;
tree->data=ele;
count++;

}
else{
cout<<"Insert to Left or Right?"<<endl;
cin>>ch;
if(ch=='L'||'l')
tree->left=insert(tree->left,ele);
if(ch=='R'||'r')
tree->right=insert(tree->right,ele);
}
return(tree);
}

void preorder(node *tree)
{
if(tree!=NULL)
{
cout<<tree->data;
preorder(tree->left);
preorder(tree->right);
//cin.get();
}
}

void inorder(node *tree)
{
if(tree!=NULL)
{
inorder(tree->left);
cout<<tree->data;
inorder(tree->right);
//cin.get();
}
}

void postorder(node *tree)
{
if(tree!=NULL)
{
postorder(tree->left);
postorder(tree->right);
cout<<tree->data;
//cin.get();
}
}