c++ - 在递归二叉搜索树中搜索

标签 c++ algorithm pointers binary-search-tree

我正在使用递归在我的二叉搜索树中搜索一个元素,但如果 BST 中不存在该元素,我的代码将停止工作。

void tree::searching(node *root,int key)
{
    if(root->key==key||root==NULL)
    {
       cout<<"Congratulation Element found in the BST"<<"\n";
       return;
    } else {
        if(key<root->key)
        {
           searching(root->left,key);
        } else {
           searching(root->right,key);
        }
    }
}

最佳答案

您在此处取消引用 NULL 指针:

if(root->key==key||root==NULL)
{
    cout<<"Congratulation Element found in the BST"<<"\n";
    return;
}

|| 运算符首先评估左侧,如果它是值,则然后 评估右侧。因此,在检查它是否为 NULL 之前取消引用 root

先做NULL检查,如果找到NULL指针则返回:

void tree::searching(node *root,int key)
{
    if (root == nullptr) {
        return;
    }

    if(root->key==key) {
        cout<<"Congratulation Element found in the BST"<<"\n";
    } else if(key<root->key)
        searching(root->left,key);
    } else {
        searching(root->right,key);
    }
}

关于c++ - 在递归二叉搜索树中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52897220/

相关文章:

c++ - 为什么在 C 和 C++ 中动态分配的对象是未命名的?

algorithm - 找到具有足够平均分数的最长序列

algorithm - 来自有序和级别顺序遍历的二叉树?

c - 指向指针的指针

c++ - 函数,在 C++ 中输出一个整数的数字之和?

c++:使用 map 作为另一个 map 的值(value)

从集合中选择特定数量的元素以达到某个值的算法

c - 使用 int 和 size_t 时的结果差异

c++ - C++内存管理错误

c++ - 在程序中添加空间计数器