Мой класс сборки MIPS требовал, чтобы я прочитал выражение неизвестного размера в дереве синтаксического анализа. Мне никогда не приходилось иметь дело с деревьями, поэтому я решил хранить значения следующим образом:
Допустим, пользователь ввел выражение 1 + 3–4 (каждый операнд может быть только цифрой 1–9).
Мой крайний левый дочерний узел будет отправной точкой и будет содержать 2 части данных.
1. The operand
2. Pointer to the next node (operator)
Вот как я построил дерево. Я бы указывал от операнда к оператору, от следующего операнда к следующему оператору, пока не осталось больше значений для чтения.
Моей следующей задачей было рекурсивно пройти по дереву и вывести значения в инфиксной / префиксной / постфиксной нотации.
Обход инфиксов не представлял проблемы, учитывая, как я построил свое дерево.
Застрял на приставке. Во-первых, я этого не совсем понимаю.
Когда я выводю наше выражение (1 + 3 - 4) в префиксе, должно ли оно выходить - + 1 3 4? Мне сложно следовать онлайн-примерам.
Как вы думаете, мое дерево построено правильно? Я имею в виду, что у меня нет возможности перейти к предыдущему узлу с текущего узла, что означает, что мне всегда приходится начинать обход с самого левого дочернего узла, что инстинктивно звучит неправильно, хотя мой ТА сказал, что это правильный путь.
Спасибо за любую помощь.