繁体   English   中英

从C中的BST删除

[英]Deleting from a BST in C

我对C编程非常陌生,并且正在将其用于我的一门课。 我正在从事的项目涉及BST并从中删除节点。

在内存和分配方面,如果树中的所有节点都是使用malloc()函数创建的,那么足以在特定节点上调用free将其删除吗? 还是我也必须将父对象的指针设置为NULL?

默认情况下,不指向任何内容的指针的值为NULL,所以我不明白为什么需要手动设置它。 它不会造成任何伤害,但是释放内存就足够了。

您始终可以编写一个快速测试,以确保现在不存在的子代的值实际上为NULL ...类似于以下内容(未经测试,只是一个一般性的想法):

int checkNull(Node* x){
    return(x->child == NULL ? 1 : 0);
}

如果checkNull()返回1,那就很好。 如果没有,也许您毕竟必须手动将其重置。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM