youtube :
code:
#include<iostream>
using namespace std;
//Definition of Node for Binary search tree
struct BstNode
{
int data;
BstNode* left;
BstNode* right;
};
//Function to create new Node in heap
BstNode* GetNewNode(int data)
{
BstNode* newNode=new BstNode();
newNode->data=data;
newNode->left=newNode->right=NULL;
return newNode;
}
//To search an element in BST return true if element is found
bool Search(BstNode* root, int data)
{
if(root==NULL)
return false;
else if(root->data==data)
return true;
else if(data<=root->data)
return Search(root->left,data);
else
return Search(root->right,data);
}
//TO insert data in BST, return address of root node
BstNode* Insert(BstNode* root, int data)
{
if(root==NULL) //empty tree
{
root=GetNewNode(data);
}
//if data to be inserted is lesser, insert it in left subtree
else if(data<=root->data)
{
root->left=Insert(root->left,data);
}
//else, insert in right subtree
else
{
root->right=Insert(root->right,data);
}
return root;
}
int main()
{
BstNode* root=NULL;//creating an empty tree
/* Code to test the logic */
root=Insert(root,15);
root=Insert(root,10);
root=Insert(root,20);
root=Insert(root,25);
root=Insert(root,8);
root=Insert(root,12);
//asking user to enter a number
int number;
cout<<"Enter number to be searched:\n";
cin>>number;
//If number is found, print "FOUND"
if(Search(root,number)==true)
cout<<"Found\n";
else
cout<<"Not Found\n";
return 0;
}

