У меня есть двоичные булевы функции в качестве входных строк, и мне нужен эффективный способ найти «основной» или «корневой» оператор. Некоторые ограничения по форме формулы заключаются в том, что есть только операторы «и» и «или», а не отрицание. Строки ввода обозначают операторы «и» как одиночные операторы «а» и «или» как одиночные операторы «о». Элементарные переменные представлены заглавными буквами. Я работаю в Python. Например,
s = "((A o B) a C) a D" ==> root = second 'a'
s = "(A o B) a (C o D)" ==> root = 'a'
Вместо того, чтобы настраивать бинарное дерево для обхода, я решил работать непосредственно с формулой для простоты в других областях программы. Кроме того, я хотел бы избежать создания целого дерева для формулы, поскольку единственной целью было бы найти корень. Мне было интересно, есть ли у кого-нибудь эффективный способ найти рут?
Спасибо за вашу помощь!