删除树的同时如何释放内存 我删除一棵树的所有节点后,发现有些内存依然没有释放。树的所有节点都是InsertItem函数放进去的,删除使用了DeleteAllItems函数,请各位大侠告诉我原因和解决方法,谢谢,不胜感激。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 删除所有的节点,其实就是一个遍历的过程。那么就看看你用哪种遍历了,如果用了先序遍历,那么根节点就会被首先删除,它的左、右子树就找不到了。中序遍历,首先删除左子树,然后是根节点,那么他相应的右子树就会被保留。只有后序遍历才可以。可以用递归。伪代码如下:void DeleteAllItems(boot){ if(boot->leftchild!=NULL) DeleteAllItems(boot->leftchild) ; if(boot->rightchild!=NULL) DeleteAllItems(boot->rightchild); free(boot);} 自定义消息实现两个工作线程的通信,自定义消息函数里面写什么代码? atl服务中访问HKEY_CLASSES_ROOT键 求读卡器源码。 局域网连接服务器问题 C++ VS2005中用CFile对象读取一个文件异常 华为核心网招聘 一段C代码在VC编译出错,请问如何解决? 求助,问题很简单,但是我不会!在线等待! 关于找工作的奇怪问题,不可不看啊 关于32,64位程序的问题 删除树的同时如何释放内存 关于SDI自行产生的帮助~~
中序遍历,首先删除左子树,然后是根节点,那么他相应的右子树就会被保留。
只有后序遍历才可以。可以用递归。
伪代码如下:
void DeleteAllItems(boot)
{
if(boot->leftchild!=NULL) DeleteAllItems(boot->leftchild) ;
if(boot->rightchild!=NULL) DeleteAllItems(boot->rightchild);
free(boot);
}