Thursday, May 5, 2022

Question 71 : How can you find minimum and maximum elements in binary search tree?

 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 tree
    public 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 tree
    public 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 tree
    public static TreeNode minimumElement(TreeNode root)
    {
        if(root.left==null)
            return root;
        else
        {
            return minimumElement(root.left);
        }
    }
 
    // Get maximum element in binary search tree
    public 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;
            else
                insert(root.left,nodeToBeInserted);
        }
        else if(root.data < nodeToBeInserted.data)
            if(root.right==null)
                root.right=nodeToBeInserted;
            else
                insert(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 tree
        TreeNode 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

Don't miss the next article! 
Be the first to be notified when a new article or Kubernetes experiment is published.                            

 

 Share This

You may also like

Kubernetes Microservices
Python AI/ML
Spring Framework Spring Boot
Core Java Java Coding Question
Maven AWS