这是节点定义:
typedef struct drzewo BST;
struct drzewo {
int key;
BST *left;
BST *right;
BST *p;
};
我正在尝试编写添加函数:
BST *add( BST *root, int val)
{
BST *x = root;
BST *nowe =(BST*)malloc(sizeof(BST));
nowe->key = val;
nowe->left=nowe->right=nowe->p=NULL;
...
}
但是malloc似乎导致了分段错误,当root=NULL时,或者其他错误(在windows上写入)。为什么会这样?
我怀疑,在...
中,您有一个对x->left
或x->right
的赋值(或从中读取),以便于将新分配的节点链接到树中。如果root为NULL,则此操作应该失败。
使用valgrind(如果您的系统是Linux)或调试器来调试问题。
学习使用调试器(例如Linux上的gdb
)。