我有一个empty_tree()函数,如果树是空的,它基本上返回一个真值,如果不是,则返回false。
bool empty_tree(AVL self)
{
if (self == NULL)
{
return true;
}
else
{
return false;
}
}
它的存在使得我的程序在没有评论的情况下更容易理解。现在,它在我的程序中的其他任何地方都能正常工但是,当我尝试在我的插入函数中使用它代替工作时:
if(self == NULL)
我的程序会崩溃。这并不是什么大问题,使用' if(self == NULL)就足够了,但我只是想知道是否有人有任何想法,为什么这会导致程序崩溃。正如我所说,它并不是非常重要,所以我不会费心包括更多的代码,但如果有人有任何猜测,我会很高兴听到你的想法。
编辑:根据要求,此处有效部分:
if (self == NULL)
{
self = (AVL)malloc(sizeof(struct avlNode));
self->student_id = id;
self->left = self->right = NULL;
}
这里的代码将在更改为此时崩溃程序:
if (!empty_tree(self))
{
self = (AVL)malloc(sizeof(struct avlNode));
self->student_id = id;
self->left = self->right = NULL;
}