Przejdź do treści

Drzewa wyrażeń arytmetycznych

Pseudokod

funkcja Oblicz(wierzchołek):
    1. Jeżeli wierzchołek jest liściem, to:
        2. Zwróć wartość wierzchołka
    3. Zwróć wynik operacji arytmetycznej, gdzie operatorem jest wartość wierzchołka, a wartościami są odpowiednio Oblicz(lewy potomek) oraz Oblicz(prawy potomek)

Zadanie 1

Zapoznaj się z pseudokodem opisującym sposób obliczania wartości wyrażenia arytmetycznego zapisanego za pomocą drzewa binarnego, a następnie oblicz wartość wyrażenia reprezentowanego przez poniższe drzewo. Zapisz poszczególne kroki obliczeń poprzez przedstawienie zmieniającego się drzewa binarnego, gdzie, w odpowiedniej kolejności, poddrzewa są zastępowane poprzez jeden wierzchołek zawierający wartość wyrażenia arytmetycznego, które zostało obliczone na tym poddrzewie.

%%{init: {"flowchart": {"curve": "linear"}, "theme": "neutral"} }%%
flowchart TD
    op1["-"] --> op2["*"]
    op1 --> op3["/"]
    op3 --> n1["5"]
    op3 --> n2["1"]
    op2 --> op4["+"]
    op4 --> n3["2"]
    op4 --> n4["3"]
    op2 --> n5["4"]

Zadanie 2

Wykonaj polecenie z zadania pierwszego opierając się na poniższym drzewie.

%%{init: {"flowchart": {"curve": "linear"}, "theme": "neutral"} }%%
flowchart TD
    op1["-"] --> op2["*"]
    op2 --> n1["10"]
    op2 --> op3["+"]
    op3 --> op4["/"]
    op3 --> n2["8"]
    op4 --> n3["15"]
    op4 --> n4["5"]
    op1 --> n5["3"] 

Zadanie 3

Przedstaw poniższe wyrażenie arytmetyczne w postaci drzewa wyrażeń arytmetycznych.

\(4 + (9 - 3) * (6 / 2)\)