如何释放包含 char 指针的 BST?

How to free a BST that contains a char pointer?

这是我用来创建 BST 的节点。我怎样才能释放这棵树。下面是我尝试过的尝试,但我不太确定如何释放 str.

typedef struct tree_s tree_t;

struct tree_s 
{
    char *str;
    tree_t *left;
    tree_t *right;
};

void freeTree(tree_t *tree) {
    if (tree == NULL) 
    {
        return;
    }
    /* first delete both subtrees */
    freeTree(tree->left);
    free(tree->str);
    freeTree(tree->right);

    /* then delete the node */
    free(tree);
 }

只需进行后序遍历(这就是您正在做的)和 free() 分配的内存。 [ free(str)] 你的情况 free(tree->str); 你做对了。更简洁的

void preord(tree *root)
{
if(root)
{
   preord(root->left);
   preord(root->right);
   free(tree->str);
   free(tree);
}
}

注意:一旦你知道你当前工作的节点是non-null那么你可以随时释放char *,只记得children 必须在 parent.

之前释放