二叉树剔除子树,free出错
二叉树删除子树,free出错。代码如下:C/C++ codeint delNode (Node * cur) {if (!cur) return 0if (cur-le
二叉树删除子树,free出错。
代码如下:
C/C++ codeint delNode (Node * cur) { if (!cur) return 0; if (cur->left) delNode (cur->left); if (cur->right) delNode (cur->right); if (!cur->left && !cur->right) { free (cur); cur = NULL; } return 1;}
这一段代码的作用是通过递归,把cur以下的所有结点都删除掉,主要问题是,只要有free (cur)就是出现那个“遇到无效指令”的对话框。
我认为逻辑上就是如此了,不知道错在哪儿了。
[解决办法][解决办法][解决办法]同意7楼的,可以把程序改成如下格式,该程序已经过测试
void delNode (Node **cur)
{
if (*cur == NULL ) return 0;
delNode ( &( (*cur)->left));
delNode ( &( (*cur)->right));
free ( *cur );
*cur = NULL;
}
[解决办法]