树的析构函数哪里错了?

[复制链接]
查看11 | 回复2 | 2012-11-22 23:08:53 | 显示全部楼层 |阅读模式
void BinaryTree::destory(BTnode *r){ if(r==NULL)return; else {destory(r->leftchild);destory(r->rightchild);// delete r;
// 这里错了,释放了r,则返回时指针会出错// 修改代码如下// 应该将需要删除的节点由另一个临时指针指向,而 r 向其父节点回退一级BTnode node = r;r = r->parent;delete node;node = NULL; }}...
回复

使用道具 举报

千问 | 2012-11-22 23:08:53 | 显示全部楼层
架构设计有问题,改成void BinaryTree::destory(BTnode *r){
if(r==NULL)
return;
else
{
r->destory();
delete r;
}}然后由 class BTn...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行