Ещё такой вопрос.
Допустим, у меня математическое выражение представлено деревом (в узлах операторы(унарные и бинарные), в листьях переменные и константы). Получается так, что существует определенное множество различных возможных деревьев, которые будут обозначать одно и то же выражение.
a + b + c
+ или + или +
/ \ / \ / \
a + + c + b
/ \ / \ / \
b c a b a c
a, b, c — вообще говоря выражения, а не переменные
Мне нужно сравнить выражение с шаблоном.
Шаблон:
a + c
представлено деревом так
+
/ \
a c
Если просто сравнивать деревья и поддеревья, то обнаружить то что в исходном выражении содержаться выражения подходящие по шаблону можно только в третьем случае(3 вариант дерева).
Как правильно решить эту проблему?