读书人

二叉搜索树的销毁,该如何处理

发布时间: 2012-09-11 10:49:03 作者: rapoo

二叉搜索树的销毁

void Clear(struct tree *p)
{

while(p != NULL)
{
Clear(p->left);
Clear(p->right);
free(p);
}

return;

}

问题:我始终无法宏观理解这个过程,所以给我讲讲这个过程,具体的递归关系的跟踪我已经看过了
二叉树的遍历和插入有很多也是这种递归

[解决办法]
p->left也是struct tree类型,Clear(p->left)是递归调用。
可以理解为:要释放一个树,只需要释放左右子树,以及节点自身。那释放左右子树,同样只要释放子树的左右子树和子节点自身,递归下去就完成了释放。
不过你这个函数我觉得有点问题,while应该为if,free(p)后,p不会为NULL的,第二次循环会崩溃。

读书人网 >C语言

热点推荐