C++ 从二叉树中删除节点
请帮忙。下面的删除功能有什么问题。我好像想不出来 我似乎遇到了一个错误: 类声明似乎很好。主要的问题是让这个删除功能正常工作C++ 从二叉树中删除节点,c++,visual-c++,C++,Visual C++,请帮忙。下面的删除功能有什么问题。我好像想不出来 我似乎遇到了一个错误: 类声明似乎很好。主要的问题是让这个删除功能正常工作 void binaryTree::Remove(int) { if (node != NULL) { Node* tmptr = node; int rootdata = node->data; /int rSubtree; } { // Case 0- no child if (node->lChild
void binaryTree::Remove(int) {
if (node != NULL)
{
Node* tmptr = node;
int rootdata = node->data;
/int rSubtree;
}
{
// Case 0- no child
if (node->lChild == NULL && node->rChild == NULL)
{
node = NULL;
//parent- //set the parent of the node to NULL
delete node;
}
// has one child
else if (node->lChild == NULL && node->rChild != NULL)
{
node = node->rChild;
node->rChild = NULL;
delete node;
}
else if (node->lChild != NULL && node->rChild == NULL)
{
node = node->lChild;`enter code here`
node->lChild = NULL;
delete node;
}
}
尝试将
node=NULL
与delete节点交换代码>否则您将试图删除NULL。您是否介绍了如果您有两个子节点会发生什么情况?释放过程应该向后进行,这样可以避免错误或处理仍然需要的项显示二进制树
类的声明。@Gareth:程序崩溃。虽然它构建了@buck,但我还没有涵盖这两个孩子,因为我似乎可以正确地理解这一点。根本不需要做node=NULL
——除非node
是一个引用,在这种情况下它实际上是有意义的。否则就不行了。