在二进制搜索函数中创建节点 typedef结构节点 { int数据; 结构节点*next,*prev; }哈沙; void create_leaf(harsha**pnode,int值) { 哈沙*温度=*pnode; 如果(*pnode==NULL) { *pnode=(结构节点*)malloc(sizeof(结构节点)); 如果(!(*pnode)) { printf(“未分配成员”); 出口(0); } (*pnode)->数据=值; (*pnode)->prev=NULL; (*pnode)->next=NULL; } 其他的 { 如果(值>(温度->数据)) 创建_leaf(&(temp->next),value); else if(valuedata) 创建_leaf(&(temp->prev),value); } }

在二进制搜索函数中创建节点 typedef结构节点 { int数据; 结构节点*next,*prev; }哈沙; void create_leaf(harsha**pnode,int值) { 哈沙*温度=*pnode; 如果(*pnode==NULL) { *pnode=(结构节点*)malloc(sizeof(结构节点)); 如果(!(*pnode)) { printf(“未分配成员”); 出口(0); } (*pnode)->数据=值; (*pnode)->prev=NULL; (*pnode)->next=NULL; } 其他的 { 如果(值>(温度->数据)) 创建_leaf(&(temp->next),value); else if(valuedata) 创建_leaf(&(temp->prev),value); } },c,binary-search-tree,C,Binary Search Tree,这是我为将新节点插入二元搜索树而编写的函数。我的代码是否有任何问题,因为我的索引、前序和后序遍历工作不正常。放置一些printf以查看指针是否匹配。从您的输出可以看出,8上有一些指针不是空的。:)在向函数发送pnode&pnode时,您是否已将pnode初始化为null?我想是这样。:) 确切的问题是什么?很难解决“工作不正常”的问题。…void inoder\u遍历(harsha*pnode){if(pnode!=NULL){inoder\u遍历(pnode->prev);printf(“%d

这是我为将新节点插入二元搜索树而编写的函数。我的代码是否有任何问题,因为我的索引、前序和后序遍历工作不正常。

放置一些printf以查看指针是否匹配。从您的输出可以看出,8上有一些指针不是空的。:)在向函数发送pnode&pnode时,您是否已将pnode初始化为null?我想是这样。:)

确切的问题是什么?很难解决“工作不正常”的问题。…
void inoder\u遍历(harsha*pnode){if(pnode!=NULL){inoder\u遍历(pnode->prev);printf(“%d\t”,pnode->data);inoder\u遍历(pnode->next)}else返回;}
是我的inoder函数,如果输入是5 4 8。它正在打印4 5 8,后面跟着一些大数字,并且程序停止工作,没有转到其他函数的后序和前序
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);
    }
}