在二进制搜索函数中创建节点 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); } }
这是我为将新节点插入二元搜索树而编写的函数。我的代码是否有任何问题,因为我的索引、前序和后序遍历工作不正常。放置一些printf以查看指针是否匹配。从您的输出可以看出,8上有一些指针不是空的。:)在向函数发送pnode&pnode时,您是否已将pnode初始化为null?我想是这样。:) 确切的问题是什么?很难解决“工作不正常”的问题。…在二进制搜索函数中创建节点 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
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);
}
}