Search a node in Binary Tree

Given a Binary Node and a node. The task is to search and check if the given node exits in the binary tree or not. If it exists, print YES otherwise print NO.

Given Binary Tree:


Input : Node = 4
Output : YES

Input : Node = 40
Output : NO

The idea is to use any of the tree traversals to traverse the tree and while traversing check if the current node matches with the given node. Print YES if any node matches with the given node and stop traversing further and if the tree is completely traversed and none of the node matches with the given node then print NO.

Below is the implementation of the above approach:





// C++ program to check if a node exists
// in a binary tree
#include <iostream>
using namespace std;
// Binary tree node
struct Node {
    int data;
    struct Node *left, *right;
    Node(int data)
        this->data = data;
        left = right = NULL;
// Function to traverse the tree in preorder
// and check if the given node exists in it
bool ifNodeExists(struct Node* node, int key)
    if (node == NULL)
        return false;
    if (node->data == key)
        return true;
    /* then recur on left sutree */
    bool res1 = ifNodeExists(node->left, key);
    /* now recur on right subtree */
    bool res2 = ifNodeExists(node->right, key);
    return res1 || res2;
// Driver Code
int main()
    struct Node* root = new Node(0);
    root->left = new Node(1);
    root->left->left = new Node(3);
    root->left->left->left = new Node(7);
    root->left->right = new Node(4);
    root->left->right->left = new Node(8);
    root->left->right->right = new Node(9);
    root->right = new Node(2);
    root->right->left = new Node(5);
    root->right->right = new Node(6);
    int key = 4;
    if (ifNodeExists(root, key))
        cout << "YES";
        cout << "NO";
    return 0;




My Personal Notes arrow_drop_up