CSES - Puun korkeus

Toteuta kurssimateriaalin mukainen binäärihakupuu, jossa puun korkeuden pystyy hakemaan metodilla height.

Puun korkeus on suurin puussa olevan solmun syvyys. Toisin sanoen puun korkeus ilmaisee, montako kaarta pisin polku puun juuresta lehteen sisältää. Jos puu on tyhjä, korkeus on 1-1.

Ota pohjaksi kurssimateriaalin toteutus ja lisää luokkaan muuttuja max_depth, jota päivitetään tarvittaessa metodin add kutsumisen jälkeen. Metodi height voi palauttaa suoraan tämän muuttujan arvon.

Toteuta tiedostoon treeheight.py luokka TreeSet seuraavan mallin mukaisesti. Tehtäväsi on täydentää metodi add, johon voit ottaa pohjan kurssimateriaalista.

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

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

    def add(self, value):
        # TODO

    def height(self):
        return self.max_depth

if __name__ == "__main__":
    numbers = TreeSet()
    print(numbers.height()) # -1
    numbers.add(2)
    print(numbers.height()) # 0
    numbers.add(1)
    print(numbers.height()) # 1
    numbers.add(3)
    print(numbers.height()) # 1
    numbers.add(4)
    print(numbers.height()) # 2