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
是一个引用,在这种情况下它实际上是有意义的。否则就不行了。