Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki
111
Pokaż ćwiczenia:
11
Ćwiczenie 1

W języku Python 3 dostępny jest standardowy moduł queue. Zapoznaj się z pokazanym kodem, a następnie wykonaj umieszczone pod nim polecenia.

Linia 1. import queue. Linia 3. class Wezel dwukropek. Linia 4. def podkreślnik podkreślnik init podkreślnik podkreślnik otwórz nawias okrągły self przecinek lewy znak równości None przecinek prawy znak równości None zamknij nawias okrągły dwukropek. Linia 5. self kropka lewy znak równości lewy. Linia 6. self kropka prawy znak równości prawy. Linia 8. def stworz otwórz nawias okrągły elementy zamknij nawias okrągły dwukropek. Linia 9. kolejka znak równości queue kropka Queue otwórz nawias okrągły zamknij nawias okrągły. Linia 10. for element in elementy dwukropek. Linia 11. wezel znak równości Wezel otwórz nawias okrągły element otwórz nawias kwadratowy 0 zamknij nawias kwadratowy przecinek element otwórz nawias kwadratowy 1 zamknij nawias kwadratowy zamknij nawias okrągły. Linia 12. kolejka kropka put otwórz nawias okrągły wezel zamknij nawias okrągły. Linia 13. return kolejka. Linia 15. elementy znak równości otwórz nawias kwadratowy otwórz nawias okrągły 65 przecinek apostrof A apostrof zamknij nawias okrągły przecinek otwórz nawias okrągły 66 przecinek apostrof B apostrof zamknij nawias okrągły przecinek otwórz nawias okrągły 67 przecinek apostrof C apostrof zamknij nawias okrągły przecinek otwórz nawias okrągły 68 przecinek apostrof D apostrof zamknij nawias okrągły przecinek otwórz nawias okrągły 69 przecinek apostrof E apostrof zamknij nawias okrągły przecinek otwórz nawias okrągły 70 przecinek apostrof F apostrof zamknij nawias okrągły zamknij nawias kwadratowy. Linia 17. p znak równości stworz otwórz nawias okrągły elementy zamknij nawias okrągły. Linia 19. kratka wywołania wraz z oczekiwanymi wynikami. Linia 20. print otwórz nawias okrągły p kropka get otwórz nawias okrągły zamknij nawias okrągły kropka dzieci otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły. Linia 21. kratka otwórz nawias okrągły 65 przecinek apostrof A apostrof zamknij nawias okrągły. Linia 22. print otwórz nawias okrągły p kropka get otwórz nawias okrągły zamknij nawias okrągły kropka dzieci otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły. Linia 23. kratka otwórz nawias okrągły 66 przecinek apostrof B apostrof zamknij nawias okrągły. Linia 24. print otwórz nawias okrągły p kropka get otwórz nawias okrągły zamknij nawias okrągły kropka dzieci otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły. Linia 25. kratka otwórz nawias okrągły 67 przecinek apostrof C apostrof zamknij nawias okrągły.
RYigv1hFDBjyj
Wskaż poprawny kod, który należy zastosować.
RJsCpHINi0MEh
Zaznacz wszystkie prawidłowe odpowiedzi Możliwe odpowiedzi: 1. Klasa Queue ma zdefiniowane 3 kolejki : FIFO, LIFO, Priorytetowa, 2. Klasa Queue ma zdefiniowane 2 kolejki : FIFO, LIFO, 3. metoda get() zwraca element kolejki i nie usuwa go., 4. metoda get() zwraca element kolejki i usuwa go.
21
Ćwiczenie 2

Zdefiniuj klasę class Wezel o następujących polach i metodach:

Pola:

  • dane – o domyślnej wartości None

  • lewo – o domyślnej wartości None

  • prawo – o domyślnej wartości None

Metody:

  • konstruktor – przypisuje każdemu polu odpowiednie wartości

  • dunder __str__ – nadpisuje domyślną metodę odpowiedzialną za zwracanie łańcucha znaków odpowiadającego danemu obiektowi; deklarujemy ją w ten sposób: def __str__(self); zaimplementowana metoda powinna zwracać łańcuch znaków f"Wartość = {self.dane}"

  • dzieci – zwraca łańcuch znaków: f"Dzieci: L -> {self.lewo} P -> {self.prawo}"

Następnie dla każdej krotki zawartej w liście wezly stwórz obiekty klasy Wezel z zawartością pola dane zgodną z pierwszą wartością krotki. Wartościami pól lewoprawo powinny być nowo utworzone obiekty, których indeks w tablicy wezly odpowiada kolejno drugiej i trzeciej wartości z krotki (None oznacza brak dziecka, a więc wartością pola lewo bądź prawo będzie None).

Przykład 1

Dla listy wezly = [("korzen", None, 1), ("prawo", None, None)] musimy utworzyć węzeł z polami dane o wartości "korzen", lewo zawierające wartość Noneprawo zawierające obiekt klasy Wezel, którego dane to "prawo", lewo to Noneprawo to None

Specyfikacja problemu:

Dane:

  • wezly – lista zawierająca krotki z wartościami pól instancji klasy

Wynik:

Na standardowym wyjściu program wypisuje dane dla zadanych węzłów, a następnie ich dzieci.

Swoje rozwiązanie przetestuj dla listy: wezly = [("korzen", 1, 2), ("lewo", None, None), ("prawo", None, None)].

RXWC4qQBwPddz
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
31
Ćwiczenie 3

Korzystając z klasy zaimplementowanej w zadaniu 2, utwórz węzły w ten sam sposób, a następnie zapisz funkcję wedrownik(element) przechodzącą po drzewie binarnym. Powinna ona działać rekurencyjnie według następującego algorytmu:

  • jeśli wywoływany element jest wartością None, funkcja kończy działanie;

  • w pozostałych przypadkach funkcja wyświetla wartość zawartą w węźle, a następnie rekurencyjnie wywołuje się dla elementów najpierw lewego, a potem prawego.

Specyfikacja problemu:

Dane:

  • wezly – lista zawierająca krotki z wartościami pól instancji klasy

Wynik:

Na standardowym wyjściu program wypisuje dane wszystkich węzłów, po których przeszedł za pomocą funkcji wedrownik().

Swoje rozwiązanie przetestuj dla listy: wezly = [("Główny", 1, 2), ("Posredni", 3, None ), ("Prawy", None, None), ("Lewy", 4, None), ("Ostatni", None, None)].

Rrv5OQa8sSQq4
Wymyśl pytanie na kartkówkę związane z tematem materiału.