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

时间:2015-09-05 06:29:05

标签: c tree binary-search-tree free

这是我用来创建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);
 }

1 个答案:

答案 0 :(得分:3)

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

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

注意:一旦您知道当前正在工作的节点是非空的,那么您可以随时释放char *,只记得必须先释放子节点父节点。