C 函数擦除所有二叉树元素



一个 C-lang 函数,它擦除了树的所有元素,当我调用它时它不会压碎,但当我尝试显示树或调用任何给它 (_root( 作为参数的函数时,它粉碎了

void free_tree(tree *_root) {//testing, not working
tree p= *_root;
if (p) {
if (p->left) free_tree(&p->left);
if (p->right) free_tree(&p->right);
free(p);
}
}

我验证了函数之外可能导致错误的任何其他事情,但似乎一切正常,谢谢任何人都可以回答

您没有将*_root设置为 NULL。由于该函数以递归方式调用自身,因此只有第一个实际参数将是根节点,因此我将简单地将参数命名为 t。此外,不需要左/右空检查。试试这个:

void free_tree(tree *t) {
tree p = *t;
if (p != NULL) {
free_tree(&p->left);
free_tree(&p->right);
free(p);
*t = NULL;
}
}

最新更新