Monday 26 October 2015

Binary search tree

#include <iostream>

using namespace std;
struct node
{
    int data;
     node* left;
     node* right;
};

void preorder(struct node *root)
{
    if (root != NULL)
    {   cout<<root->data<<endl;
        preorder(root->left);

        preorder(root->right);
    }
}
void inorder(struct node *root)
{
    if (root != NULL)
    {
        inorder(root->left);
        cout<<root->data<<endl;
        inorder(root->right);
    }
}

void postorder(struct node *root)
{
    if (root != NULL)
    {
        postorder(root->left);

        postorder(root->right);
        cout<<root->data<<endl;
    }
}

node* insert(node* ptr, int x)
{

    if (ptr == NULL)
       {
            node* temp =  new node;

            temp->data = x;
            temp->left = temp->right = NULL;
            ptr=temp;

       }

    else  if (x < ptr->data)
        ptr->left  = insert(ptr->left,x);
    else if (x> ptr->data)
        ptr->right = insert(ptr->right,x);

    return ptr;
}
int main()
{int x;

    struct node *root = NULL;
    char ch='y';
    while(ch!='n')
    {
        cout<<"Enter the element:";
        cin>>x;
        root= insert(root,x);
        cout<<"Do you want to insert more elements y/n:";
        cin>>ch;

    }

cout<<"Preorder traversal:";
preorder(root);
cout<<"Inorder traversal:";
inorder(root);
cout<<"Postorder traversal";
postorder(root);

    return 0;
}

No comments:

Post a Comment