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

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

15,979

社区成员

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

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