二叉树代码错误

Binary tree code error

我正在尝试编写代码将元素插入二叉树而不 recursion.But 我面临的问题是每次我尝试插入一个节点时,它都没有被插入,树也没有增长为 expected.Only 第一个元素保留在树中。

void insert(struct node **head1,int data1)
{
    struct node *temp1,*temp;

    temp=*head1;
    struct node *datatemp,*prevtemp;
    while(temp!=NULL)
    {
        if(temp->data < data1)
        {
            temp=temp->right;
        }
        else if(temp->data > data1)
        {
            temp=temp->left;
        }
    }
    datatemp=(struct node *)malloc(sizeof(struct node));
    datatemp->data=data1;
    datatemp->right=NULL;
    datatemp->left=NULL;
    temp=datatemp;
}

请帮忙..我试过调试但我找不到逻辑中的错误。

此处temp=datatemp;设置函数中的局部指针指向新分配的节点。
但是一旦函数存在,那个局部就消失了,你的内存就会泄漏。您没有修改找到的节点。