Zadanie 12 (termin oddania 9 marca, 23:59, 2 pkt)

Napisz _moduł_ dla programu, który:
 - wczyta ze standardowego wejścia i zbuduje w pamięci dwa drzewa 
    binarnych wyszukiwań (BST),
 - doda je do siebie tworząc trzecie drzewo (binarne, ale już nie koniecznie BST),
 - wypisze to trzecie drzewo infiksowo,
 - zwolni pamięć.

 Dane do programu mają postać dwu wierszy. Każdy wiersz opisuje jedno drzewo
 i ma postać ciągu liczb całkowitych pooddzielanych pojedynczymi odstępami (ani 
 przed pierwszą liczbą, ani za ostatnią nie ma odstępów). Wszystkie liczby z wiersza
 należy jedna po drugiej wstawiać do (początkowo pustego) drzewa BST. Przyjmujemy, 
 że przy wstawianiu powtarzające się klucze wstawiamy do prawego poddrzewa.

Wynik dodawania dwu drzew binarnych (więc także i BST) definiujemy jako drzewo
binarne mające tę własność, że ma ono wierzchołek wtw gdy w tym samym miejscu
struktury drzewa co najmniej jedno z dodawanych drzew ma wierzchołek Wartością
przechowywana w wierzchołku jest suma wartości wierchołków z odpowiadających
mu wierzchołków dodawanych drzew (jeśli w jednym z dodawanym drzew nie 
ma odpowiadającego wierzcholka, to traktujemy go jak wierzchołek z wartością 0).

Wypisywanie drzewa binarnego polega tu na wypisaniu tylu wierszy ile drzewo
ma wierzchołków, kolejne wiersze odpowiadają kolejnym wierzchołkom,
w każdym wierszu wypisujemy najpierw głębokość wierzchołka (przyjmujemy, że
korzeń ma głębokość 0), potem pojedynczy odstęp i na koniec wartość 
przechowywaną w wierzchołku.

Moduł ma mieć następujący interfejs:

interface
  type
    TBin = {odpowiednia deklaracja}
    function wczytaj: TBin;
    function dodaj(d1, d2: TBin): TBin;
    procedure wypisz(d: TBin);
    procedure usun(var d: TBin);

i _musi_ nazywać się zad12.pas.

Program będzie miał następującą postać:

program program_zad12;
 uses zad12;
 var
   d1, d2, d3: TBin;
 begin
   d1 := wczytaj;
   d2 := wczytaj;
   d3 := dodaj(d1,d2);
   wypisz(d3);
   usun(d1);
   usun(d2);
   usun(d3);
 end.

Np. dla danych:

1 2 3 
4 -3 6 5

program powinien wypisać:

1 -3
0 5
2 5
1 8
2 3

UWAGA: jako rozwiązanie należy wysłać _wyłącznie_ moduł!

Dodatek:

Rysunki drzew z przykładu (dla czcionki nieproporcjonalnej):

pierwsze:
1
 \
  2
   \ 
    3


drugie:
  4
 / \
-3  6
   /  
   5

wynik:
  5
 / \
-3  8
   / \  
   5  3