Witam.
Zgłaszam się do was o poradę po raz drugi, a za poprzednią bardzo dziękuję!
Mam do napisania tłumacz polsko-angielski, angielsko-polski. Plik słownika może być dowolnej długości i ma być w formie:
kot cat
pies dog
ryba fish
Mam wykorzystać do tego drzewo binarne. Dla jezyka polskiego zbudowane jest w ten sposób, ze wyrazy, które stoją wcześniej w porządku alfabetycznym są po lewej stronie wezła, a te, które stoja pózniej – po prawej stronie. Te same elementy, które
naleza do drzewa dla jezyka polskiego, sa takze elementami drzewa dla jezyka angielskiego zbudowanego według porzadku alfabetycznego wyrazów angielskich.
No i tu mam pierwszą wątpliwość. Koncept drzewa binarnego rozumiem jednak zastanawiam się jak porównać wyrazy alfabetycznie, żeby odpowiednio wstawić je do drzewa i czy w korzeniu ma być wyraz, który jest w 'alfabetycznym środku'? I patrząc na kolejne węzły: w prawym węźle ma być słowo, które jest następne alfabetycznie(czy po prostu, takie, które jest dalej w alfabecie, ale niekoniecznie następne?) a w lewym poprzednie(czy niekoniecznie?)? Jeżeli muszą być po kolei, czyli, że najbardziej w prawym dole jest ostatnie alfabetycznie słowo a najbardziej w lewym dole jest słowo pierwsze, to jak porównać te słowa i je odpowiednie ułożyć?
Generalnie trochę zagmatwałem pewnie więc TL/DR: Jak ułożyć wyrazy w porządku alfabetycznym i jak wprowadzić je do drzewa?
I jeszcze jedno pytanie niezwiązane z samym tłumaczem, ale nigdy czegoś takiego nie robiłem i byłbym wdzięczny za wskazówkę jak to zrobić?:
Program uruchamiany jest z linii polecen z wykorzystaniem następujących przełączników:
-s plik wejsciowy słownika
-i plik wejsciowy z tekstem do przetłumaczenia
-o plik wyjsciowy z przetłumaczonym tekstem
-k kierunek tłumaczenia
Z góry dziękuję za pomoc.
EDIT: Już wiem, że to co napisałem z drzewem binarnym jest bez sensu, po prawej nie musi być następne słowo a po lewej nie musi być po przednie, tak jest tylko w przypadku gdy lewy/prawy węzeł nie ma już dalszych synów, rozumiem. Pytanie jednak dalej zostaje, jak wprowadzać te słowa do drzewa?
EDIT2: Oh my! Rozumiem, przy dodawaniu każdego słowa, zaczynam od korzenia, czyli nie ma opcji, że jakimś cudem po prawej stronie znajdzie się coś większego od korzenia. Mój błąd, źle zrozumiałem drzewo binarne. Jak porównać jednak, które słowo jest dalej w alfabecie, a które bliżej? Z tą wiedzą spróbuję sobie z tym teraz poradzić. Z góry dzięki!