- Given a binary search tree (BST), find minimum & maximum element in a BST
- Traverse the binary search tree using depth first search (DFS) recursive algorithm .
- Properties of binary search trees are:
- Left child node is less than its parent node.
- Right child node is greater than its parent node.
- The properties should hold good for all subtrees in a BST.
- We will demonstrate couples of examples to find min and max node in a BST.
- We have discussed about find min & max element in a binary tree.
- We will use the properties of BST to find minimum & maximum value.
- We are not required to traverse the whole binary search tree.
What is minimum element in BST ?
- Leftmost child in a BST, is the minimum element.
- Traverse left nodes of binary search tree to find minimum element.
- No need to traverse the right nodes of BST.
What is maximum element in BST?
- The right most child of BST, is the maximum element.
- Traverse right nodes of binary search tree to find maximum element.
- No need to traverse the left nodes of binary search tree.
Example 1: find min & max value in a BST (Fig 1).
- Left most child i.e. Node B (50) is minimum element in a BST.
- Right most child i.e. Node C (150) is maximum element in a BST.
Example 2: find min & max value in a BST (Fig 2).
- Minimum value of BST is 10
- Maximum value of BST is 170.
Algorithm to find minimum element in a binary search tree
- Start from root node
- Go to left child
- Keep on iterating (or recursively) till, we get left child as null
- We found the minimum value in binary search tree.
Program to find minimum element in a BST
public static int min(Node root) {
if(null == root) {
System.out.println("Tree is empty");
return -1;
}
//we found the min value
if(root.left == null) {
return root.data;
}
return min(root.left);
}
Algorithm to find maximum element in a binary search tree
- Start from root node
- Go to right child
- Keep iterating (or recursively) till we found right child as null
- We found the maximum value in binary search tree
Program to find maximum value in BST.
public static int max(Node root) {
if(null == root) {
System.out.println("Tree is empty");
return -1;
}
//we found the max value
if(root.right == null) {
return root.data;
}
return max(root.right);
}
}
Complete program to find minimum & maximum element in a BST
1.) MinAndMaxInBST class:
- MinAndMaxInBST class is responsible for finding minimum and maximum element in BST.
package org.learn.Question;
public class MinAndMaxInBST {
public static int min(Node root) {
if(null == root) {
System.out.println("Tree is empty");
return -1;
}
//we found the min value
if(root.left == null) {
return root.data;
}
return min(root.left);
}
public static int max(Node root) {
if(null == root) {
System.out.println("Tree is empty");
return -1;
}
//we found the max value
if(root.right == null) {
return root.data;
}
return max(root.right);
}
}
2.) Node Class:
- Node class is representing the nodes of a BST.
package org.learn.Question;
public class Node {
public int data;
public Node left;
public Node right;
public Node(int num) {
this.data = num;
this.left = null;
this.right = null;
}
public Node() {
this.left = null;
this.right = null;
}
public static Node createNode(int number) {
return new Node(number);
}
}
3.) App Class:
- We are creating a binary tree in a main method.
- We are calling method of MinAndMaxInBST class, to find minimum/maximum element in a BST.
package org.learn.Client;
import org.learn.Question.MinAndMaxInBST;
import org.learn.Question.Node;
public class App {
public static void main(String[] args) {
// root level 0
Node A = Node.createNode(100);
// Level 1
Node B = Node.createNode(50);
Node C = Node.createNode(150);
// Level 2
Node D = Node.createNode(25);
Node E = Node.createNode(80);
Node F = Node.createNode(125);
Node G = Node.createNode(170);
// Level 3
Node H = Node.createNode(10);
Node I = Node.createNode(30);
Node J = Node.createNode(60);
Node K = Node.createNode(90);
Node L = Node.createNode(110);
Node M = Node.createNode(140);
// connect Level 0 and 1
A.left = B;
A.right = C;
// connect level 1 and level 2
B.left = D;
B.right = E;
C.left = F;
C.right = G;
// connect level 1 and level 2
D.left = H;
D.right = I;
E.left = J;
E.right = K;
F.left = L;
F.right = M;
System.out.println("Min value in BST is : " + MinAndMaxInBST.min(A));
System.out.println("Max value in BST is : " + MinAndMaxInBST.max(A));
}
}
Output – min & max value in a BST
Min value in BST is : 10 Max value in BST is : 170
Download Code – Min & Max Element in BST (Recursive)
