Solution : Leftmost and rightmost nodes of binary search tree are minimum and maximum nodes respectively
Finding minimum element:
Minimum element is nothing but leftmost node in binary search tree, so traverse left until you get leftmost element.
// Get minimum element in binary search treepublic static TreeNode minimumElement(TreeNode root){if(root.left==null)return root;else{return minimumElement(root.left);}}
Finding maximum element:
Maximum element is nothing but the rightmost node in the binary search tree, so traverse right until you get the rightmost element.
/ Get maximum element in binary search treepublic static TreeNode maximumElement(TreeNode root){if(root.right==null)return root;else{return maximumElement(root.right);}}
Complete java program:
public class BinarySearchTreeMinMaxMain {public static class TreeNode{int data;TreeNode left;TreeNode right;TreeNode(int data){this.data=data;}}public static boolean search(TreeNode root,TreeNode nodeToBeSearched){if(root==null)return false;if(root.data== nodeToBeSearched.data){return true;}boolean result=false;if(root.data > nodeToBeSearched.data)result=search(root.left,nodeToBeSearched);else if(root.data < nodeToBeSearched.data)result= search(root.right,nodeToBeSearched);return result;}// Get minimum element in binary search treepublic static TreeNode minimumElement(TreeNode root){if(root.left==null)return root;else{return minimumElement(root.left);}}// Get maximum element in binary search treepublic static TreeNode maximumElement(TreeNode root){if(root.right==null)return root;else{return maximumElement(root.right);}}public static TreeNode insert(TreeNode root,TreeNode nodeToBeInserted){if(root==null){root=nodeToBeInserted;return root;}if(root.data > nodeToBeInserted.data){if(root.left==null)root.left=nodeToBeInserted;elseinsert(root.left,nodeToBeInserted);}else if(root.data < nodeToBeInserted.data)if(root.right==null)root.right=nodeToBeInserted;elseinsert(root.right,nodeToBeInserted);return root;}public static void inOrder(TreeNode root){if(root==null)return;inOrder(root.left);System.out.print(root.data+" ");inOrder(root.right);}public static void main(String[] args){// Creating a binary search treeTreeNode rootNode=createBinarySearchTree();System.out.println("Minimum element in binary search tree: "+minimumElement(rootNode).data);System.out.println("Maximum element in binary search tree: "+maximumElement(rootNode).data);}public static TreeNode createBinarySearchTree(){TreeNode rootNode =new TreeNode(40);TreeNode node20=new TreeNode(20);TreeNode node10=new TreeNode(10);TreeNode node30=new TreeNode(30);TreeNode node60=new TreeNode(60);TreeNode node50=new TreeNode(50);TreeNode node70=new TreeNode(70);TreeNode node5=new TreeNode(5);TreeNode node55=new TreeNode(55);insert(null,rootNode);insert(rootNode,node20);insert(rootNode,node10);insert(rootNode,node30);insert(rootNode,node60);insert(rootNode,node50);insert(rootNode,node70);insert(rootNode,node5);insert(rootNode,node55);return rootNode;}}
When you run above program, you will get below output:
Minimum element in
binary search tree:
5
Maximum element in
binary search tree:
70