|
-
December 21st, 2010, 12:52 AM
#1
A Question About inserting node in a regular Binary Tree
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();
}
}
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|