首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-09-11 
二叉搜索树的销毁void Clear(struct tree *p){while(p ! NULL){Clear(p-left)Clear(p-right)free(p)

二叉搜索树的销毁

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的,第二次循环会崩溃。

热点排行