Search code examples
c++algorithmdata-structuresbinary-search-tree

How can I check(checkV) if a value exists in Binary search tree if does I output "true" else "false"


How can I check(checkV) if a value exists in Binary search tree if does I output "true" else "false"

void search(Node* root, int checkV){

    if(checkV > root->data){
        search(root->right, checkV);
    }
    if(checkV < root->data){
        search(root->left, checkV);
    }
    if(checkV == root->data){
        cout << "true"<<endl;
    }
    else{
        cout << "false"<<endl;
    }
}

Solution

  • If you need to use function "search", then first you should check if root points the nullptr, then if you found data and only after that you should search. Something like this:

    void search(Node* root, int checkV) {
    
        if (root->data == nullptr) {
            cout << "false" << endl;
        }
        else if (checkV == root->data) {
            cout << "true" << endl;
        }
        else if (checkV > root->data) {
            search(root->right, checkV);
        }
        else {
            search(root->left, checkV);
        }
    }
    

    But it would be better, if you return bool from search and print result according to that

    bool search(Node *root, int checkV) {
        if (root == nullptr)
            return false;
        if (root->data == checkV)
            return true;
        return root->data < checkV ? check(root->left, checkV) : check(root->right, checkV);
    }