在二进制搜索功能中创建节点

时间:2012-11-26 10:20:43

标签: c binary-search-tree

typedef struct node
{
    int data;
    struct node *next,*prev;
}harsha;

void create_leaf(harsha **pnode,int value)
{
    harsha *temp=*pnode;
    if(*pnode==NULL)
    {
        *pnode=(struct node *)malloc(sizeof(struct node));
        if(!(*pnode))
        {
            printf("mem not allocated");
            exit(0);
        }
        (*pnode)->data=value;
        (*pnode)->prev=NULL;
        (*pnode)->next=NULL;
    }
    else
    {
        if(value>(temp->data))
        create_leaf(&(temp->next),value);
        else if(value<temp->data)
        create_leaf(&(temp->prev),value);
    }
}

这是我为将新节点插入二叉搜索树而编写的函数。我的代码有任何问题,因为我的Inorder,Preorder和Postorder遍历不能正常工作。

1 个答案:

答案 0 :(得分:1)

把一些printf看成是匹配的指针。正如我从输出中可以看出的那样,你在8上有一些非空的指针。 :)在发送&amp; pnode函数时,你是否已将pnode初始化为null?我认为是这样的。 :)