Write a Python function to find the minimum element in a binary search tree.
Posted by KarenKg
Last Updated: August 15, 2024
In a binary search tree (BST), the minimum element can be found by traversing to the leftmost node. This is because, by definition, each node's left child contains a value less than its own, making the leftmost node the smallest value in the tree. The following Python function demonstrates how to find the minimum element in a BST:
class TreeNode:
    def init(self, value):
        self.value = value
        self.left = None
        self.right = None


def find_minimum(node):
    if node is None:
        raise ValueError("The tree is empty.")
    
    current = node
    while current.left is not None:
        current = current.left
    
    return current.value


# Example usage:
# Constructing a binary search tree:
#        5
#      /   \
#     3     8
#    / \   /
#   2   4 6

root = TreeNode(5)
root.left = TreeNode(3)
root.right = TreeNode(8)
root.left.left = TreeNode(2)
root.left.right = TreeNode(4)
root.right.left = TreeNode(6)

# Finding the minimum element
min_value = find_minimum(root)
print(f"The minimum value in the BST is: {min_value}")
Explanation:
1. TreeNode Class: This defines a node in the binary search tree, containing its value and pointers to left and right children. 2. find_minimum Function: - The function checks if the node passed is None, raising an error if so. This prevents attempting to find a minimum in an empty tree. - It initializes a variable current to traverse the left side of the tree. - A while loop continues until there are no more left children, ensuring the function only returns the leftmost node’s value. 3. Example Usage: A simple binary search tree is constructed, and the minimum value is found and printed. This method operates in O(h) time complexity, where h is the height of the tree, and it effectively retrieves the minimum value in a BST.