Класс должен сгенерировать дерево разбора на основе строки постфикса, а затем рекурсивно вызвать функцию печати на узле root, который будет печатать дерево разбора, но я продолжаю получать следующую ошибку: строка 15, в infixPrintNode self.right.infixPrintNode () AttributeError: у объекта 'NoneType' нет атрибута 'infixPrintNode'
Я новичок в python и считаю, что ошибка является экземпляром и я действительно запутался, был бы признателен за разъяснения
import operator
class Node:
def __init__(self, data, left=None, right=None):
self.data, self.left, self.right = data, left, right
def __str__(self):
return self.data
def infixPrintNode(self):
if self:
if self.right:
return self.right.infixPrintNode()
print(self.data)
if self.left:
return self.left.infixPrintNode()
class ParseTree:
def __init__(self, root = None):
self.root = (root)
def __str__(self):
pass # to be implemented
def fromPostfix(self, expression=""):
s=[] #maintain parents
for c in expression.split():
if c in ["+", "-", "*", "/", "^", "#"]:
n=Node(c)
n.right = s.pop()
n.left=s.pop()
s.append(n)
elif c.isnumeric() or c.isalpha() :
n=Node(c)
s.append(n)
else:
raise ValueError("Invalid token! ")
self.root = (s.pop())
print(self.root.left.data)
print(self.root.data)
print(self.root.right.data)
return self.root #or Node(s.pop())
def printinfix(self):
if self.root:
self.root.infixPrintNode()
t=ParseTree("x y +")
t.fromPostfix("x y +")
t.printinfix()