Задать вопрос
@McLightning

Как вычислить мат.выражение представленное в виде дерева?

struct Node {
Node A;
Node B;
float ValueDigit;
char ValueChar;
}

Изображение дерева
63b4b05518df8188779515.png
  • Вопрос задан
  • 191 просмотр
Подписаться 2 Средний Комментировать
Решения вопроса 1
@dima20155
you don't choose c++. It chooses you
Можно пройтись поиском в глубину (DFS) до последнего узла и дальше двигаясь в обратном направлении выполнить вычисления.
1. вначале мы находим самую нижнюю ноду, а она точно цифра (в противном случае смысла нет)
2. делаем шаг назад и выполняем вычисление
3. редактируем имеющуюся структуру "укорачивая" дерево (то есть вместо знака действия у нас теперь цифра)
4. делаем так пока не получим дерево состоящее только из корня, которое и будет решением.

Попробовал написать решение твоей задачки, код по ссылке
https://godbolt.org/z/PzWjYjvfz
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Раз тут уже посчитаны приоритеты вычисления - просто рекурсивно проходишься по каждому узлу, вычисляя его.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы