if(parent!=NULL)
{
if((parent->leftChildPtr)==nodePtr)
{
parent->leftChildPtr=nodePtr->leftChildPtr;
}
else if(parent->rightChildPtr==nodePtr)
{
parent->rightChildPtr=nodePtr->leftChildPtr;
}
}
delPtr = nodePtr;
nodePtr = nodePtr->leftChildPtr;
delPtr->leftChildPtr = NULL;
delete delPtr;
我的removeItem函数中有if语句指令。我不知道数据泄漏是如何发生的。如您所见,我将节点指向要删除的另一个指针,即delPtr,然后将nodeptr设置为它,并删除delptr及其内容。所以这个NodePtr的父节点应该看到" nodePtr'右子节点"作为它的孩子,但没有。
答案 0 :(得分:0)
您需要显示更多代码,但在我设置nodePtr时,我似乎很可能不会更新父节点的相应子指针。所以它仍然保留了nodePtr的前一个值,它现在已经被删除了。