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