### C++ program to find the closest element in binary search tree

Description:
This Program is to print the closest elements present in the binary search tree.Let's learn it by the help of example:

Input : Tree elements are : 1 2 3 5 6 4 7 8 9 10

Output : Enter a element : 12
Closest Element is : 10

Program :

//C++ program to find the closest element in binary search tree #include <bits/stdc++.h> using namespace std; // tree node struct Node { int data; Node *left, *right; }; // returns a new tree Node Node* newNode(int data) { Node* temp = new Node(); temp->data = data; temp->left = temp->right = NULL; return temp; } // A function to create binary search tree. Node* Tree(Node* root, int data) { // Create node using data entered by user. Node *temp = newNode(data); Node *temp1 = new Node; temp1 = root; // If root is null then the node created. if(root == NULL) root = temp; else { // Search the position for the new node to be inserted. while(temp1 != NULL) { if(temp1->data < data ) { if(temp1->right == NULL) { // If current node is NULL then the value will be inserted here and break. temp1->right = temp; break; } // Shift pointer to the left. temp1 = temp1->right; } else if(temp1->data > data) { if(temp1->left == NULL) { temp1->left = temp; break; } // Shift pointer to the left. temp1 = temp1->left; } } } return root; } // Function to find node with minimum difference with given n void minimum(struct Node *ptr, int n, int &min, int &min_diff) { if (ptr == NULL) return ; // If n itself is present if (ptr->data == n) { min_diff= n; return; } // update min and min_diff by checking current node value if (min > abs(ptr->data - n)) { min = abs(ptr->data - n); min_diff = ptr->data; } // if n is less than ptr->data then move in left subtree else in right subtree if (n < ptr->data) minimum(ptr->left, n, min, min_diff); else minimum(ptr->right, n, min, min_diff); } int minDiff(Node *root, int n) { // Initialize minimum difference int min = INT_MAX, min_diff = -1; // Find value of min_diff (Closest data in tree with n) minimum(root, n, min, min_diff); return min_diff; } // Driver program to run the case int main() { int n, arr[20],size; Node *root = new Node; root = NULL; cout<<"Enter the size of array : "; cin>>size; cout<<"Enter the elements in array : "; for(int i=0;i<size;i++) { cin>>arr[i]; } // Construct the binary search tree. for(int i = 0; i < size; i++) root = Tree(root, arr[i]); cout<<"Enter a element : "; cin>>n; cout <<"\nClosest Element is : "<< minDiff(root, n); return 0; }

#### More Articles of Mandeep Sheoran:

Name Views Likes
C++ program to insert an element into binary tree 6240 19
C++ program to find an element into binary tree 772 16
C++ std::is_void 572 15
C++ program to find the closest element in binary search tree 916 19
C++ program to replace every element with the least greater element on its right 573 12
C++ program to delete an element into binary tree 784 24
C++ program to find maximum element between two nodes of binary search tree 699 20
C++ std::remove_copy_if with std::vectors 547 11
C++ program to print duplicate elements from the binary search tree 2937 15
C++ program to find depth of the deepest odd level node in binary tree 575 23
C++ program to remove duplicate elements from the binary search tree 1548 20
C++ std::rotate_copy with std::vector 529 14
C++ std::copy_n with std::vector 638 22
C++ std::copy_if with std::vector 1552 18
C++ program to print all the elements of binary search tree 7105 22
C++ std::reverse_copy with std::list 598 18
C++ program to print all the elements of binary tree 1158 18
C++ program to print all full nodes in a binary tree 572 25
C++ program to find sink odd nodes in binary tree 580 15
C++ std::is_copy_assignable 595 22
C++ program to check whether a binary tree is a full binary tree or not using recursion 609 19
C++ std::is_copy_constructible 618 27
C++ program to delete an element into binary search tree 2873 18
C++ std::reverse_copy with std::vector 487 18
C++ std::rotate with std::vector 641 15
C++ program to check for symmetric binary tree using recursion 599 25
C++ program to maximum sum from a tree with adjacent levels not allowed 551 15
C++ std::copy_n with std::list 595 21
C++ program to check if two trees are identical using recursion 545 15
C++ std::copy_n 874 21
C++ std::copy_if with std::list 998 19
C++ program to print the nodes at odd levels of a tree 562 13
C++ program to find lowest common ancestor in a binary tree 689 29
C++ program to find depth of the deepest odd level leaf node 494 13
C++ std::remove_copy_if with std::list 666 20
C++ program to add all greater values to every node in a given binary search tree 637 15