C++分段故障BST



我目前正在研究二叉搜索树的 c++ 实现。一切似乎都运行良好,但我的搜索功能给我带来了问题。

BinarySearchTree::node* BinarySearchTree::SEARCH(node* x, int key)
{
    if(root == NULL) {
            cout << "This is an empty tree." << endl;
            return NULL;
    } else {
            if(x->key == key) {
                    return x;
            }
            if(x == NULL) {
                    cout << "Value not in tree." << endl;
                    return x;
            }
            if(key < x->key ) {
                    return SEARCH(x->left, key);
            } else {
                    return SEARCH(x->right, key);
            }
    }
}

每次我搜索不在树中的键值时,以及当节点值为 NULL 时(例如,如果包含最大值或最小值的值(,这都会给我一个分段错误。

先检查空指针,然后再检查其余指针。如果 x 为 NULL,则按 x->key 访问密钥将给您带来分段错误。

if(x == NULL) {
  cout << "Value not in tree." << endl;
  return x;
}
if(x->key == key) {
  return x;
}
...

相关内容

  • 没有找到相关文章

最新更新