Searching In A Binary Search Tree In C++
Searching In A Binary Search Tree
A binary search tree is a tree in which the data in left subtree is less than the root and the data in right subtree is greater than the root.Given a Binary Search tree and a key, check whether the key is present in the tree or not.
Code Implementation of Binary Search Tree Program in C++
Run
#include<bits/stdc++.h>
using namespace std;
class Tree
{
public:
int data;
Tree *left = NULL, *right = NULL;
// Constructor initialised
Tree (int x)
{
data = x;
left = NULL;
right = NULL;
}
};
int search (Tree * root, int value)
{
while (root != NULL)
{
if (value > root->data)
root = root->right;
else if (value < root->data)
root = root->left;
else
return 1;
}
return 0;
}
void inorder_traversal (Tree * root)
{
if (root == NULL)
return;
inorder_traversal (root->left);
cout << root->data << " ";
inorder_traversal (root->right);
}
Tree *insert_node (Tree * root, int x)
{
if (root == NULL)
{
Tree *temp = new Tree (x);
return temp;
}
if (root->data > x)
{
root->left = insert_node (root->left, x);
}
else
{
root->right = insert_node (root->right, x);
}
return root;
}
Tree *Delete (Tree * root, int x)
{
if (root == NULL)
{
cout << "Node not found ";
return NULL;
}
if (root->data > x)
{
root->left = Delete (root->left, x);
}
else if (root->data < x)
{
root->right = Delete (root->right, x);
}
else
{
if (root->left == NULL)
{
Tree *temp = root->right;
free (root);
return temp;
}
else if (root->right == NULL)
{
Tree *temp = root->left;
free (root);
return temp;
}
else
{
Tree *temp = root->right;
while (temp->left != NULL)
temp = temp->left;
root->data = temp->data;
root->right = Delete (root->right, temp->data);
}
}
return root;
}
int main ()
{
Tree *root = new Tree (15);
root->left = new Tree (13);
root->right = new Tree (18);
root->left->left = new Tree (8);
root->left->right = new Tree (14);
root->right->left = new Tree (16);
root->right->right = new Tree (19);
int delete_item = 18;
cout << "Inorder Traversal :";
inorder_traversal (root);
cout << endl;
cout << endl;
cout << "17 inserted \n";
insert_node(root,17);
cout << "Inorder Traversal :";
inorder_traversal (root);
cout << endl;
cout << endl;
cout << "18 deleted \n";
Delete (root, delete_item);
cout << "Inorder Traversal :";
inorder_traversal (root);
cout << endl;
cout<< "Searching for element 15 \n";
cout << search (root, 15);
}
Output: Inorder Traversal :8 13 14 15 16 18 19 17 inserted Inorder Traversal :8 13 14 15 16 17 18 19 18 deleted Inorder Traversal :8 13 14 15 16 17 19 Searching for element 15
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Introduction to Trees
Binary Trees
- Binary Tree in Data Structures (Introduction)
- Tree Traversals: Inorder Postorder Preorder : C | C++ | Java
- Inorder Postorder PreOrder Traversals Examples
- Tree Traversal without Recursion
Binary Search Trees
Traversals
- Traversal in Trees
- Tree Traversals: Breadth-First Search (BFS) : C | C++ | Java
- Tree Traversals: Depth First Search (DFS) : C | C++ | Java
- Construct a Binary Tree from Postorder and Inorder
B – Trees
AVL Trees
- AVL Trees
Complete Programs for Trees
- Depth First Traversals – C | C++ | Java
- Level Order Traversal – C | C++ | Java
- Construct Tree from given Inorder and Preorder traversals – C | C++ | Java
- Construct Tree from given Postorder and Inorder traversals – C | C++ | Java
- Construct Tree from given Postorder and Preorder traversal – C | C++ | Java
- Find size of the Binary tree – C | C++ | Java
- Find the height of binary tree – C | C++ | Java
- Find maximum in binary tree – C | C++ | Java
- Check whether two tree are identical- C| C++| Java
- Spiral Order traversal of Tree- C | C++| Java
- Level Order Traversal Line by Line – C | C++| Java
- Hand shaking lemma and some Impotant Tree Properties.
- Check If binary tree if Foldable or not.- C| C++| Java
- check whether tree is Symmetric – C| C++| Java.
- Check for Children-Sum in Binary Tree- C|C++| Java
- Sum of all nodes in Binary Tree- C | C++ | Java
- Lowest Common Ancestor in Binary Tree- C | C++ | Java
Introduction to Trees
Binary Trees
- Binary Tree in Data Structures (Introduction)
- Tree Traversals: Inorder Postorder Preorder : C | C++ | Java
- Inorder Postorder PreOrder Traversals Examples
- Tree Traversal without Recursion
Binary Search Trees
Traversals
- Traversal in Trees
- Tree Traversals: Breadth-First Search (BFS) : C | C++ | Java
- Tree Traversals: Depth First Search (DFS) : C | C++ | Java
- Construct a Binary Tree from Postorder and Inorder
B – Trees
AVL Trees
- AVL Trees
Complete Programs for Trees
- Depth First Traversals – C | C++ | Java
- Level Order Traversal – C | C++ | Java
- Construct Tree from given Inorder and Preorder traversals – C | C++ | Java
- Construct Tree from given Postorder and Inorder traversals – C | C++ | Java
- Construct Tree from given Postorder and Preorder traversal – C | C++ | Java
- Find size of the Binary tree – C | C++ | Java
- Find the height of binary tree – C | C++ | Java
- Find maximum in binary tree – C | C++ | Java
- Check whether two tree are identical- C| C++| Java
- Spiral Order traversal of Tree- C | C++| Java
- Level Order Traversal LIne by Line – C | C++| Java
- Hand shaking lemma and some Impotant Tree Properties.
- Check If binary tree if Foldable or not.- C| C++| Java
- check whether tree is Symmetric C| C++| Java.
- Check for Children-Sum in Binary Tree- C|C++| Java
- Sum of all nodes in Binary Tree- C | C++ | Java
- Lowest Common Ancestor in Binary Tree. C | C++ | Java
Get over 200+ course One Subscription
Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others

Login/Signup to comment