二叉树代码错误

时间:2016-05-03 19:09:16

标签: c++ recursion tree

我正在尝试编写一个代码来将元素插入到二叉树中而不进行递归。但是我面临的问题是每次我尝试插入一个节点时,它都不会被插入并且树不会按预期增长。只有第一个元素保留在树中。

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;
}

请帮助..我试图调试,但我无法在我的逻辑中找到错误。

1 个答案:

答案 0 :(得分:1)

这里temp=datatemp;将函数中的本地指针设置为指向新分配的节点 但是一旦函数存在,那个本地就会消失,你的内存就会泄漏。您不会修改找到的节点。