現在、この関数を呼び出すと、すべての子ノードが削除され、渡されたノードのメモリが解放されますが、ノードはまだ親にリンクされており、ゴミが含まれています。
渡したノードの親ノード (左または右の子) を等しく設定できるようにする必要があるNULL
ため、ツリーをトラバースするときにプログラムがクラッシュしません。
ここに私がすでに持っているコードがあります:
void emptySubtree(BinaryNode* node) {
if (node == NULL)
return;
emptySubtree(node->left);
emptySubtree(node->right);
free(node);
}
これが私の関数呼び出しです:emptySubtree(tree->root->left)