The binary search tree implementation in the course material has the method __repr__
that calls the recursive function traverse
to construct a list of all the elements from the smallest to the largest in linear time.
Your task is to reimplement the method __repr__
without using recursion. The method should produce the same output as before, and still run in linear time.
You are not allowed to compare the element values. You must construct the list in the correct order based on only the element locations in the tree.
In a file traversal.py
, implement the class TreeSet
according to the following code template. 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 __repr__(self): # TODO if __name__ == "__main__": numbers = TreeSet() numbers.add(4) numbers.add(1) numbers.add(2) numbers.add(5) numbers.add(8) numbers.add(7) print(numbers) # [1, 2, 4, 5, 7, 8]