Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Помеченные деревья и деревья выражения




 

Часто при работе с древовидными структурами бывает полезным сопоставить каждому узлу дерева метку или значение, аналогично тому, как с элементами списков связывают определенные значения. Дерево, у которого узлам сопоставлены метки, называется помеченным деревом. Метка узла – это не имя узла, а значение которое «хранится» в узле. Полезна следующая аналогия: дерево – список, узел – позиция, метка – элемент.

Рассмотрим дерево с метками (рис. 18), представляющее арифметическое выражение: (а+b)*(а+с), где n1,…n7 – имена узлов (метки проставлены рядом с соответствующими узлами). Правила соответствия меток деревьев элементам выражений следующие:

1. Метка каждого листа соответствует операнду и содержит его значение, например узел n4 представляет операнд а.

2. Метка каждого внутреннего узла (родительского) соответствует оператору.

Рис. 18 – Помеченное дерево выражения

Предположим, что узел n помечен бинарным оператором q, (например, + или *) и левый сын этого узла соответствует выражению Е1, а правый – выражению Е2. Тогда узел n и его сыновья представляют выражение (Е1)q(Е2).

Например, узел n2 имеет оператор +, а левый и правый сыновья представляют выражения (операнды) а и b, соответственно. Поэтому узел n2 представляет выражение (а)+(b) или а+b. Узел n1 представляет выражение (а+b)*(а+с), поскольку оператор * является меткой узла n1, выражения а+b и а+с представляются узлами n2 и n3, соответственно.

Часто при обходе деревьев составляется список не имен, а их меток. В случае дерева выражений при прямом упорядочивании получаем префиксную форму выражений, где оператор предшествует и левому и правому операндам. Для точного описания префиксной формы выражений сначала положим, что префиксным выражением одиночного операнда а является сам этот операнд. Далее, префиксная форма для выражений (Е1)q(Е2), где q – бинарный оператор, имеет вид qР1Р2, здесь Р1 и Р2 – префиксные формы для выражений Е1 и Е2. Отметим, что в префиксных формах нет необходимости отделять или выделять префиксные выражения скобками, так как всегда можно просмотреть префиксное выражение qР1Р2 и определить единственным образом Р1 как самый короткий префикс выражения Р1Р2.

Например, при прямом упорядочивании узлов (точнее, меток) дерева (рис.18) получаем префиксное выражение *+аb+ас. Самым коротким корректным префиксом для выражения +аb+ас будет префиксное выражение узла n2: +аb.

Обратное упорядочивание меток дерева выражений дает постфиксное представление выражений. Выражение qР1Р2 в постфиксной форме имеет вид Р1Р2q, где Р1 и Р2 – постфиксные формы для выражений Е1 и Е2 соответственно. При использовании постфиксной формы также нет необходимости в применении скобок, поскольку для любого выражения Р1Р2 легко проследить самый короткий суффикс Р2, что и будет корректным составляющим постфиксным выражением. Например, постфиксная форма выражения для дерева на рис. 18 имеет вид аb+ас+*. Если записать выражение как Р1Р2*, то Р2 (т.е. выражение ас+) будет самым коротким суффиксом для аb+ас+ и, следовательно, корректным составляющим постфиксным выражением.

При симметричном обходе дерева выражений получим инфиксную форму выражения, которая совпадает с привычной «стандартной» формой записи, но также не использует скобок. Для дерева на рис. 18 инфиксное выражение запишется как а+b*а+с. Скобки в инфиксное выражение добавляются с помощью отдельного алгоритма.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных