删除树的同时如何释放内存
我删除一棵树的所有节点后,发现有些内存依然没有释放。树的所有节点都是InsertItem函数放进去的,删除使用了DeleteAllItems函数,请各位大侠告诉我原因和解决方法,谢谢,不胜感激 问题点数:0、回复次数:3Top
1 楼kuangjingbo(正在学习windows)回复于 2003-09-01 21:46:10 得分 0
删除所有的节点,其实就是一个遍历的过程。那么就看看你用哪种遍历了,如果用了先序遍历,那么根节点就会被首先删除,它的左、右子树就找不到了。
中序遍历,首先删除左子树,然后是根节点,那么他相应的右子树就会被保留。
只有后序遍历才可以。可以用递归。
伪代码如下:
void DeleteAllItems(boot)
{
if(boot->leftchild!=NULL) DeleteAllItems(boot->leftchild) ;
if(boot->rightchild!=NULL) DeleteAllItems(boot->rightchild);
free(boot);
}Top
2 楼atEleven(@十一)回复于 2003-09-01 22:08:49 得分 0
是不是每个节点中的数据有指向一段内存没有释放?
Top
3 楼flinming(flinming)回复于 2003-09-02 08:14:29 得分 0
upTop




