我正在写一个函数来插入节点BST,但得到分段错误。“插入到二进制搜索树中”出现分段错误。 #
/*
Node is defined as
typedef struct node
{
int data;
node * left;
node * right;
}node;
*/
node * findPos(node * tree, int value){
if(tree -> data > value){
return findPos(tree -> left, value);
}
else if (tree -> data < value){
return findPos(tree -> right, value);
}
return tree;
}
node * addNode(int value){
struct node * temp =(struct node *)malloc(sizeof(struct node));
temp->data = value;
temp->left = NULL;
temp -> right = NULL;
return temp;
}
node * insert(node * root, int value)
{
node * ptr = root;
if(ptr == NULL)
return addNode(value);
else if(ptr -> data > value){
ptr->left = findPos(ptr -> left, value);
}
else if(ptr -> data < value){
ptr->right = findPos(ptr -> right, value);
}
return root;
}
我不能够了解哪些非法内存我试图访问它给这个错误。 请帮我这个。 感谢提前:)
这是你学习如何使用调试器,这将让你直到分段故障发生时运行该程序的好机会,然后检查变量值等来诊断事情出错的地方。 –
感谢Jim对此进行了跟进,我得到了错误,因为我没有在findPos()中处理这个情况,那个树可以是NULL。 –
但是仍然逻辑不正确,试图找到,但没有得到任何东西。 –