我正在寫一個函數來插入節點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。 –
但是仍然邏輯不正確,試圖找到,但沒有得到任何東西。 –