这是节点定义:
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上写入)。为什么会这样?
答案 0 :(得分:1)
我怀疑在...
内你有x->left
或x->right
的分配(或从中读取),以便于将新分配的节点链接到树中。如果root为NULL,则应该失败。
答案 1 :(得分:0)
使用valgrind(如果您的系统是Linux)或调试器来调试您的问题。
学习使用调试器(例如Linux上的gdb
)。