这是我用来创建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);
}
答案 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 *
,只记得必须先释放子节点父节点。