 ### C++ program to find maximum element between two nodes of binary search tree

Description:

This Program is to find maximum element between two nodes of 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 2 value to find the maximum no. between them : 5 9 Maximum no. is : 9

Program :

//C++ program to find maximum element between two nodes of binary search tree #include <bits/stdc++.h> using namespace std; // tree nod 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* temp, int data ) { // If the tree is empty, return a new node if (temp == NULL) return newNode(data); // Otherwise, recur down the tree if (data < temp->data) temp->left = Tree(temp->left, data); else temp->right = Tree(temp->right, data); //return the (unchanged) node pointer return temp; } // Return the maximum element between a Node int maxelement(Node *temp, int key) { Node *temp1 = temp; int maximum = INT_MIN; while (temp -> data != key) { if (temp -> data > key) { maximum = max(maximum, temp -> data); temp = temp -> left; } else { maximum = max(maximum, temp -> data); temp = temp -> right; } } return max(maximum, key); } // Return maximum element in the path between two given Node of binary search tree. int maximumElement(struct Node *root, int key, int key1) { Node *temp = root; while ((key < temp -> data && key1 < temp -> data) || (key > temp -> data && key1 > temp -> data)) { // Checking if both the Node lie on the left side of the parent temp. if (key < temp -> data && key1 < temp -> data) temp = temp -> left; // Checking if both the Node lie on the right side of the parent temp. else if (key > temp -> data && key1 > temp -> data) temp = temp -> right; } // Return the maximum elements occur in path. return max(maxelement(temp, key), maxelement(temp, key1)); } // Driver Code int main() { int n, a, b, arr,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 tree. for(int i = 0; i < size; i++) root = Tree(root, arr[i]); cout<<"Enter 2 value to find the maximum no. between them : "; cin>>a>>b; cout <<"Maximum no. is : "<< maximumElement(root, a, b) << endl; return 0; } #### More Articles of Mandeep Sheoran:

Name Views Likes
C++ program to insert an element into binary tree 6882 19
C++ program to find an element into binary tree 815 16
C++ std::is_void 615 15
C++ program to find the closest element in binary search tree 1015 19
C++ program to replace every element with the least greater element on its right 614 12
C++ program to delete an element into binary tree 824 24
C++ program to find maximum element between two nodes of binary search tree 740 20
C++ std::remove_copy_if with std::vectors 597 11
C++ program to print duplicate elements from the binary search tree 3097 15
C++ program to find depth of the deepest odd level node in binary tree 614 23
C++ program to remove duplicate elements from the binary search tree 1755 20
C++ std::rotate_copy with std::vector 584 14
C++ std::copy_n with std::vector 671 22
C++ std::copy_if with std::vector 1660 18
C++ program to print all the elements of binary search tree 7983 22
C++ std::reverse_copy with std::list 640 18
C++ program to print all the elements of binary tree 1251 18
C++ program to print all full nodes in a binary tree 609 25
C++ program to find sink odd nodes in binary tree 610 15
C++ std::is_copy_assignable 641 22
C++ program to check whether a binary tree is a full binary tree or not using recursion 664 19
C++ std::is_copy_constructible 663 27
C++ program to delete an element into binary search tree 3196 18
C++ std::reverse_copy with std::vector 526 18
C++ std::rotate with std::vector 798 15
C++ program to check for symmetric binary tree using recursion 630 25
C++ program to maximum sum from a tree with adjacent levels not allowed 593 15
C++ std::copy_n with std::list 640 21
C++ program to check if two trees are identical using recursion 587 15
C++ std::copy_n 966 21
C++ std::copy_if with std::list 1131 19
C++ program to print the nodes at odd levels of a tree 601 13
C++ program to find lowest common ancestor in a binary tree 718 29
C++ program to find depth of the deepest odd level leaf node 529 13
C++ std::remove_copy_if with std::list 718 20
C++ program to add all greater values to every node in a given binary search tree 683 15