Implementacja drzewa BST

Zadanie 1 i 2, zestaw II
Moja implementacja drzewa BST, powinna działać na wszystkich typach
danych. W razie znalezienia błędu - prosżę o informację. Zachęcam do
sprawdzenia metody "draw()", bardzo fajnie "rysuje" drzewo w okienku
konsoli :)
Całą implementację napisałem sam od zera (oprócz metody "draw()") i
kosztowało mnie to trochę pracy także, można korzystać dowoli ale proszę
nie usuwać nagłówka z moim nazwiskiem. Dzięki