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