二叉搜索树的销毁
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的,第二次循环会崩溃。