CSES - Repeating elements

Modify the class TreeSet described in the course material so that it can contain the same element multiple times. This requires modifications to the methods given in the material. Also, implement the method count that returns the number of occurrences of a given element.

Implement the changes so that the class Node has a new member variable count that stores the number of occurrences of that element. The methods in the class TreeSet should use this variable appropriately.

In a file treemany.py, implement the class TreeSet according to the following code template. You may add other methods if needed, for example the method traverse.

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

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

    def add(self, value):
        # TODO

    def __contains__(self, value):
        # TODO

    def __repr__(self):
        # TODO

    def count(self, value):
        # TODO

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

    numbers.add(4)
    numbers.add(1)
    numbers.add(2)
    numbers.add(1)

    print(numbers) # [1, 1, 2, 4]

    print(1 in numbers) # True
    print(2 in numbers) # True
    print(3 in numbers) # False
    print(4 in numbers) # True

    print(numbers.count(1)) # 2
    print(numbers.count(2)) # 1
    print(numbers.count(3)) # 0
    print(numbers.count(4)) # 1