Binarne Drzewa Wyszukiwawcze

Transkrypt

Binarne Drzewa Wyszukiwawcze
Binarne Drzewa Wyszukiwawcze
Na wejściu podana jest sekwencja instrukcji: zapytań, modyfikacji drzew oraz przeglądania
węzłów drzewa (składnia każdego polecenia identyczna: duża litera oznaczająca instrukcję oraz
liczba), precyzyjnie:
wstawienie elementu x do drzewa (I x) (1 <= x <= 10000),
usunięcie elementu x z drzewa (D x),
wyszukiwanie elementu x w drzewie (S x),
znajdowanie najmniejszego (X 0) oraz największego (X 1) elementu w drzewie,
znajdowanie następnika elementu x (N x) oraz poprzednika elementu x (P x),
przeglądanie wierzchołków drzewa trzema sposobami (inorder: R 0, preorder: R 1,
postorder: R 2).
W zadaniu nie można stosować dodatkowych optymalizacji, podczas usuwania elementu, który
posiada dwóch potomków - wstawiamy w jego miejsce jego bezpośredniego poprzednika.
Wejście
t [liczba testów = 10]
n [liczba instrukcji do wykonania <= 10000]
instrukcje... [w jednej linii jedna instrukcja]
[kolejne testy]
Wyjście
W pierwszej linijce odpowiedzi do danego testu powinien znaleźć się napis: test nr. Odpowiedzi
podawane są w kolejnych linijkach. W przypadku jednej z instrukcji R należy na wyjściu
wydrukować wartości kluczy w kolejnych węzłach drzewa zgodnie z porządkiem, dla zapytań
należy wydrukować wartość klucza (dla Min, Max, Succ, Pred, Search (tak)) lub - dla Search
(nie), Pred (nie) lub Succ (nie). Zwracam uwagę, że żądanie wydrukowania następnika lub
poprzednika elementu, którego nie ma w drzewie zakończyć się powinno wydrukowaniem -.
Przykład
Wejście:
4
13
I5
I8
I3
I4
I7
R1
I1
R2
S7
S6
N3
D8
R0
10
I4
I2
R0
D2
X1
X0
I1
X0
X0
X1
10
I4
P1
I1
R1
I2
I5
R0
D2
I2
P1
11
I3
X0
I2
D3
I1
I5
I4
D4
I4
D4
X1
Wyjście:
test 1
53487
143785
7
4
13457
test 2
24
4
4
1
1
4
test 3
41
1245
test 4
3
5

Podobne dokumenty