我正在尝试编写一个代码来将元素插入到二叉树中而不进行递归。但是我面临的问题是每次我尝试插入一个节点时,它都不会被插入并且树不会按预期增长。只有第一个元素保留在树中。
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;
}
请帮助..我试图调试,但我无法在我的逻辑中找到错误。
答案 0 :(得分:1)
这里temp=datatemp;
将函数中的本地指针设置为指向新分配的节点
但是一旦函数存在,那个本地就会消失,你的内存就会泄漏。您不会修改找到的节点。