I have written the code to implement binary search tree insertion and display the inorder notation of the tree. This code is not giving any output. Please help me. I think something might be wrong with the insert function where some of the insertions are not happening as expected. Also I am try to use a non recursive method to perform insertion.
#include <stdio.h>
#include <stdlib.h>
struct node
{
    int val;
    struct node *lc, *rc;
};
struct node *getnode(int x)
{
    struct node *new = (struct node *)malloc(sizeof(struct node *));
    new->lc = NULL;
    new->rc = NULL;
    new->val = x;
    return new;
}
void inorder(struct node *root)
{
    if (root != NULL)
    {
        inorder(root->lc);
        printf("%d ", root->val);
        inorder(root->rc);
    }
}
void insert(struct node *root, int x)
{
    if (root == NULL)
    {
        struct node *new = getnode(x);
        root = new;
    }
    else
    {
        struct node *ptr1;
        struct node *ptr = root;
        while (ptr != NULL)
        {
            if (x < ptr->val)
            {
                ptr1 = ptr;
                ptr = ptr->lc;
            }
            else
            {
                if (x > ptr->val)
                {
                    ptr1 = ptr;
                    ptr = ptr->rc;
                }
            }
        }
        struct node *temp = getnode(x);
        if (ptr1->val > temp->val)
            ptr1->lc = temp;
        else
            ptr1->rc = temp;
    }
}
int main()
{
    struct node *root = NULL;
    insert(root, 75);
    insert(root, 85);
    insert(root, 25);
    insert(root, 12);
    insert(root, 13);
    insert(root, 15);
    insert(root, 100);
    insert(root, 105);
    printf("Inorder notation of tree is\n");
    inorder(root);
    return 0;
}
I was expecting the below as output. Inorder notation of tree is 12 13 15 25 75 85 100 105
