注册 登录
编程论坛 C++教室

关于删除指针的疑问!

lovehug 发布于 2007-07-05 21:44, 809 次点击
下面这段程序中的root我要重复用到,可是每次循环结束后调用deleteTree(root)却把整棵树全都删除了,包括root结点,我应该怎么做才能既删除了树,又能保存root节点下一次循环使用呢?
其中deleteTree(root)是通过后序遍历删除掉以root为根节点的树!

tnode<Data> *root,*curr;
root=new tnode<Data>(Tx);
root->upedge=root->downedge=Tx;
root->upedge.m_Inc=pi/2; root->downedge.m_Inc=-pi/2;
database(DataBase);
for(root->nodeValue.m_Inc=0;root->nodeValue.m_Inc<3;root->nodeValue.m_Inc++)
{
BF=0;
FirstModule(root,root->nodeValue.m_Inc,DataBase,&BF,&RF,"S");
deleteTree(root);
}

[此贴子已经被作者于2007-7-6 9:03:29编辑过]

5 回复
#2
Arcticanimal2007-07-05 23:50
删除之前复制一份可以吗?
#3
lovehug2007-07-06 07:58

好像不可以,我定义了另一个指针指向root结点,不过当root结点删除后,这个指针指向的结点也不是root结点了!

#4
lovehug2007-07-06 09:02
问题已经解决了!可以这样操作!
deleteTree(root->left);
root->left=NULL;
deleteTree(root->right);
root->right=NULL;
断其左右branch,最重要的是不要忘了root结点左右指针置空!
#5
Arcticanimal2007-07-06 16:29

看你上面的代码知道你的意思了
你在删除tree之前把根结点完整的复制一份就好了,复制指针是不行的

#6
lovehug2007-07-08 10:02

是的,复制指针还是会变化的!

1