#include<iostream> using namespace std; //class Tree template<class X> class Tree { //structure represent the node of BST private: struct Node { X data; Node *right, *left; }; int max; public: Node *root;//root node of BST; //Method to create a new node of BST Node* newNode(X data) { Node *temp=new Node; temp->data=data; temp->right=temp->left=NULL; return temp; } //Method to find largest number, less than n in BST //it will return zero if tree does not exist or BST dose not contain the element less than n int findLargest(Node *root, int n) { //Base case if(root==NULL) return max; //element found and equal to n if(n==root->data) return n; //search in right subtree //n is greater than root data if(n>root->data) { max=root->data; findLargest(root->right,n); } else findLargest(root->left,n);//search in left subtree } //constructor Tree() { max=0; root=NULL; } }; //Driver method int main() { int n=21; Tree<int>t1; t1.root=t1.newNode(15); t1.root->left=t1.newNode(10); t1.root->left->left=t1.newNode(8); t1.root->left->right=t1.newNode(12); t1.root->right=t1.newNode(22); t1.root->right->left=t1.newNode(20); t1.root->right->right=t1.newNode(24); cout<<"Largest Number is "<<t1.findLargest(t1.root,n); return 0; }
Comments