我对C编程非常陌生,并且正在将其用于我的一门课程。我正在从事的项目涉及BST并从中删除节点。
就内存和分配而言,如果树中的所有节点都是使用malloc()函数创建的,那么足以在特定节点上调用free将其删除吗?还是我也必须将父对象的指针设置为NULL?
答案 0 :(得分:-1)
一个指向空的指针默认情况下将具有NULL值,所以我不明白为什么需要手动设置它。不会造成任何伤害,但是释放内存就足够了。
您总是可以编写一个快速测试来确保现在不存在的子代的值实际上为NULL ...类似这样的东西(未经测试,只是一个一般性的想法):
int checkNull(Node* x){
return(x->child == NULL ? 1 : 0);
}
如果checkNull()返回1,那就很好。如果没有,也许您毕竟必须手动将其重置。希望这会有所帮助。