http://pascal.net.ru/Алгоритмы на графах и деревьях
Вот что у меня получилось на питоне:
Код: Выделить всё
class Tree:
L = None
R = None
data = None
def __init__(self, d=None):
self.data = d
def print(self, t, level=0):
if t.L:
self.print(t.L, level + 1)
print(str(level) + ' ' + str(t.data))
if t.R:
self.print(t.R, level + 1)
def read(s):
return s.pop()
def parce(s):
a = []
for w in s:
a.insert(0, w)
return infix(a)
def infix(s):
c = read(s)
if c == '(':
p = Tree()
p.L = infix(s)
p.data = read(s)
p.R = infix(s)
read(s) # '>'
else:
p = Tree(c)
return p
#t = infix([')', 2, '+', 3, '('])
t = parce('(2+(3*(4-5)))')
t.print(t)
Тут главное чтобы присутствовали все скобки.
Без них работать не будет.
Думаю с префиксной и постфиксной записью ещё проще.
Отсюда, переделано
http://pascal.net.ru/Алгоритмы на графах и деревьях