目前当我调用这个函数时,它会删除所有子节点并释放我传递给它的节点的内存,但该节点仍然链接到它的父节点并且包含垃圾。
我需要能够将我传递的节点的父节点(左子节点或右子节点)设置为等于 NULL
,以便程序在遍历树时不会崩溃。
这是我已有的代码:
void emptySubtree(BinaryNode* node) {
if (node == NULL)
return;
emptySubtree(node->left);
emptySubtree(node->right);
free(node);
}
这是我的函数调用:emptySubtree(tree->root->left)
最佳答案
void emptySubtree(BinaryNode* node){
if (node == NULL)
return;
else{
emptySubtree(node->left);
emptySubtree(node->right);
}
free(node);
node = NULL;
}
尝试将指针节点设置为空。调用免费电话后的好习惯。
关于c - C语言如何清空二叉树中的子树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26771112/