Metody Programowania - Lista 6
Zadanie 1
Zapoznać się z przykładem o drzewach AVL.
- co trzeba w nim
zmienić żeby węzły drzewa były reprezentowane przez wektory?
- dodać do węzłów dodatkowe pole z danymi
- zastąpić porównanie liczb przez dodatkową funkcję porównującą
podawaną przez użytkownika w momencie tworzenia drzewa (tzn. inne
funkcje mają ją odczytać z drzewa).
Zadanie 2
Przerobić wstawianie do drzew AVL tak by było "funkcjonalne", tzn.
żeby nie modyfikowało oryginalnego drzewa.
Zadanie 3
Napisać funkcję która mając dane listę (a właściwie drzewo) reprezentujące
wyrażenie logiczne i listę wartości zmiennych obliczy wartość tego wyrażenia
dla tych zmiennych. Np.
wartość_l([and x1 [or x2 x3]], [[x1 true] [x2 false] [x3 true]])
Tzn. wyrażenie jest listą która ma dwa argumenty, będące zmiennymi lub
wyrażeniami. "and" oznacza iloczyn logiczny, "or" sumę logiczną, "not"
negację (dla uproszczenia można pominąć inne operatory).