Размещено 4 года назад по предмету
Информатика
от izhtnv
НУЖНА ПОМОЩЬ!!! Измените код программы представленный ниже, так чтобы программа вывела количество узлов, рёбер и листьев в дереве(python)
class TNode:
pass
def newNode(d):
node = TNode()
node.data = d
node.left = None
node.right = None
return node
def priority(op):
if op in "+-": return 1
if op in "*/": return 2
return 100
def lastOp(s):
minPrt = 50
k = -1
for i in range(len(s)):
if priority(s[i]) <= minPrt:
minPrt = priority(s[i])
print(s[i])
k = i
return k
def makeTree(s):
k = lastOp(s)
print(s, k)
print("--------")
if k < 0:
Tree = newNode(s)
else:
Tree = newNode(s[k])
Tree.left = makeTree(s[:k])
Tree.right = makeTree (s[k+1:])
return Tree
def calcTree(Tree):
if Tree.left == None:
return int(Tree.data)
else:
n1 = calcTree(Tree.left)
n2 = calcTree(Tree.right)
if Tree.data == "+": res = n1 + n2
elif Tree.data == "-": res = n1 - n2
elif Tree.data == "*": res = n1 * n2
else: res = n1 // n2
return res
s = input("Введите выражение: ")
T = makeTree(s)
print("Результат: ", calcTree(T))