Skip to main content

Insertion in BST

 




#include <stdio.h>
#include <stdlib.h>
struct treeN
{
    int data;
    struct treeN *left;
    struct treeN *right;
   
};

struct treeN *BSTcreate(struct treeN *root, int val)
{
    if(root == NULL){
        struct treeN *root = malloc(sizeof(struct treeN));
        root->data = val;
        root->left = NULL;
        root->right = NULL;
        return root;
    }
     if (val < root->data)
    {
        root->left = BSTcreate(root->left, val);
    }
    else
    {
        root->right = BSTcreate(root->right, val);
    }
    return root;
}

void inorder(struct treeN *root)
{
    if (root != NULL)
    {
        inorder(root->left);
        printf(" %d ", root->data);
        inorder(root->right);
    }
}
struct treeN *insert(struct treeN *root,int item){
    struct treeN *prev;
    while(root!=NULL){
        prev = root;
        if(item == root->data){
            printf("Can't insert! %d is Already in Tree",item);
        }
        else if(item<root->data){
            root = root->left;
        }
        else{
            root = root->right;
        }
    }
    struct treeN *new = BSTcreate(root,item);
    if(item<prev->data){
        prev->left = new;

    }
    else{
        prev->right = new;
    }
    printf("%d Inserted\n",item);
}
int main()
{
   
    struct treeN *root = NULL;
    root = BSTcreate(root,43);
    BSTcreate(root,10);
    BSTcreate(root,79);
    BSTcreate(root,90);
    BSTcreate(root,12);
    BSTcreate(root,54);
    BSTcreate(root,11);
    BSTcreate(root,9);
    BSTcreate(root,50);
    inorder(root);
  printf("\n");
  insert(root,40);
  insert(root,4);
    inorder(root);
   
   
    return 0;
}


Comments