CSES - Min and max

Implement the binary search tree as described in the course material, but with the addition of the methods min and max that return the smallest and the largest elements. Implement the methods as described in the course material.

In a file minmax.py, implement the class TreeSet according to the following code template. Your task is to fill in the methods min and max. You are not allowed to add methods other than the ones in the code template.

class Node:
    def __init__(self, value):
        self.value = value
        self.left = None
        self.right = None

class TreeSet:
    def __init__(self):
        self.root = None

    def add(self, value):
        if not self.root:
            self.root = Node(value)
            return

        node = self.root
        while True:
            if node.value == value:
                return
            if node.value > value:
                if not node.left:
                    node.left = Node(value)
                    return
                node = node.left
            else:
                if not node.right:
                    node.right = Node(value)
                    return
                node = node.right

    def min(self):
        # TODO

    def max(self):
        # TODO

if __name__ == "__main__":
    numbers = TreeSet()

    print(numbers.min()) # None
    print(numbers.max()) # None

    numbers.add(3)
    print(numbers.min()) # 3
    print(numbers.max()) # 3

    numbers.add(4)
    print(numbers.min()) # 3
    print(numbers.max()) # 4

    numbers.add(1)
    print(numbers.min()) # 1
    print(numbers.max()) # 4