删除二叉搜索树中的所有值时出现分段错误

时间:2012-05-01 04:12:17

标签: segmentation-fault binary-search-tree

所以我在运行此函数时遇到问题,因为它不断返回分段错误。我把它缩小到了“删除根”;行,但不知道如何解决此错误。

有什么建议吗?

以下是作业中包含的前置条件和后置条件:

  

//前提条件:root是指向二进制搜索根的指针   树。

     

//后置条件:该函数删除二进制搜索的所有节点   树和设置// root到NULL。

template<class Key, class Item>
void tree_clear(bstNode<Item, Key>*& root)
{
bstNode<Item, Key>* child;
if(root != NULL)
{
    child = root->left();
    tree_clear(child);
    child = root->right();
    tree_clear(child);
    delete root;
    root = NULL;
 }
}

2 个答案:

答案 0 :(得分:0)

你的参数是一个指向引用的指针......我认为它应该是一个指向指针的指针:

void tree_clear(bstNode<Item, Key>** root)

答案 1 :(得分:0)

如果您无法更改签名,请尝试

template<class Key, class Item>
void tree_clear(bstNode<Item, Key>*& root)
{
  bstNode<Item, Key>* child;
  if(root != NULL)
  {
    if (child = root->left()) {
       tree_clear(child);
    }
    if (child = root->right()) {
       tree_clear(child);
    }
    delete root;
  }
}