删除树的同时如何释放内存

qiubinz 2003-09-01 06:31:49
我删除一棵树的所有节点后,发现有些内存依然没有释放。树的所有节点都是InsertItem函数放进去的,删除使用了DeleteAllItems函数,请各位大侠告诉我原因和解决方法,谢谢,不胜感激
...全文
20 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
flinming 2003-09-02
  • 打赏
  • 举报
回复
up
atEleven 2003-09-01
  • 打赏
  • 举报
回复
是不是每个节点中的数据有指向一段内存没有释放?
kuangjingbo 2003-09-01
  • 打赏
  • 举报
回复
删除所有的节点,其实就是一个遍历的过程。那么就看看你用哪种遍历了,如果用了先序遍历,那么根节点就会被首先删除,它的左、右子树就找不到了。
中序遍历,首先删除左子树,然后是根节点,那么他相应的右子树就会被保留。
只有后序遍历才可以。可以用递归。
伪代码如下:
void DeleteAllItems(boot)
{
if(boot->leftchild!=NULL) DeleteAllItems(boot->leftchild) ;
if(boot->rightchild!=NULL) DeleteAllItems(boot->rightchild);
free(boot);
}

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧