gpt4 book ai didi

c - 从 C 中的 BST 中删除

转载 作者:行者123 更新时间:2023-11-30 18:11:03 25 4
gpt4 key购买 nike

我对 C 编程非常陌生,并且正在我的一门类(class)中使用它。我正在从事的项目涉及 BST 并从中删除节点。

就内存和分配而言,如果树中的所有节点都是使用 malloc() 函数创建的,那么在特定节点上调用 free 来删除它是否足够?或者我是否也必须将父级的指针设置为 NULL?

最佳答案

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

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

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

如果 checkNull() 返回 1,则表示没问题。如果没有,也许您确实必须手动重置它。希望这会有所帮助。

关于c - 从 C 中的 BST 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52580289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com