Kurssimateriaalin binäärihakupuun toteutuksessa metodi __repr__
muodostaa lineaarisessa ajassa listan, joka sisältää puun alkiot pienimmästä suurimpaan.
Tehtäväsi on toteuttaa tämä metodi uudestaan ilman rekursiota. Metodin tulee antaa sama tulos kuin ennenkin, ja sen tulee toimia edelleen lineaarisessa ajassa.
Et saa vertailla metodissa puun solmuissa olevia arvoja, vaan lista tulee rakentaa sen perusteella, mikä on solmujen järjestys puussa.
Toteuta tiedostoon traversal.py
luokka TreeSet
seuraavan mallin mukaisesti. Et saa lisätä luokkaan muita metodeja kuin tehtäväpohjassa olevat.
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]