Witam,
jestem świeży na forum . Chciałbym zadać Wam pytanie(nie znalazłem odpowiedzi tutaj, na innych forach, ani u kolegów z grupy): Co jest nie tak z moim kodem i dlaczego nie mogę wyświetlić preorderem drzewa, ani dokonać obliczeń?
class BinaryTree:
def __init__(self):
self.root = None
def preorder_walk(self, node = None):
def walk(node):
if node is not None:
print node.key
walk(node.left)
walk(node.right)
if node is None:
walk(self.root)
else:
walk(node)
def operacja(self, node):
if(node.key == '+'):
return self.operacja(node.left) + self.operacja(node.right)
if(node.key == '-'):
return self.operacja(node.left) - self.operacja(node.right)
if(node.key == '*'):
return self.operacja(node.left) * self.operacja(node.right)
if(node.key == '/'):
return self.operacja(node.left) / self.operacja(node.right)
else:
return node.key
class Node:
def __init__(self, key):
self.key = key
self.parent = None
self.left = None
self.right = None
#Metoda dodaje nowe elementy do drzewa
def Mutuj(left, right):
wezel = Node('+')
wezel.Left = left
wezel.Right = right
return wezel
#Metoda czyta rownanie ze stringa do drzewa
def Parse(str):
try:
value = int(str)
return Node(value)
except:
idx = str.find('+')
left = str[:idx]
right = str[idx+1:]
potomek_l = Parse(left)
potomek_p = Parse(right)
return Mutuj(potomek_l, potomek_p)
BT = BinaryTree()
BT.drzewo = (Parse("123+5+7"))
print BT.drzewo.operacja()
# W tym momencie dostaje błąd o treści: AttributeError: Node instance has no attribute 'operacja'