Измените код программы представленный ниже, так чтобы программа вывела количество узлов, рёбер и листьев в дереве(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))
Ответы на вопрос:
class Node:
def __init__(self, val):
self.l = None
self.r = None
self.v = val
class Tree:
def __init__(self):
self.root = None
def getRoot(self):
return self.root
def add(self, val):
if self.root is None:
self.root = Node(val)
else:
self._add(val, self.root)
def _add(self, val, node):
if val < node.v:
if node.l is not None:
self._add(val, node.l)
else:
node.l = Node(val)
else:
if node.r is not None:
self._add(val, node.r)
else:
node.r = Node(val)
def find(self, val):
if self.root is not None:
return self._find(val, self.root)
else:
return None
def _find(self, val, node):
if val == node.v:
return node
elif (val < node.v and node.l is not None):
return self._find(val, node.l)
elif (val > node.v and node.r is not None):
return self._find(val, node.r)
def deleteTree(self):
# garbage collector will do this for us.
self.root = None
def printTree(self):
if self.root is not None:
self._printTree(self.root)
def _printTree(self, node):
if node is not None:
self._printTree(node.l)
print(str(node.v) + ' ')
self._printTree(node.r)
# 3
# 0 4
# 2 8
tree = Tree()
tree.add(3)
tree.add(4)
tree.add(0)
tree.add(8)
tree.add(2)
tree.printTree()
print(tree.find(3).v)
print(tree.find(10))
tree.deleteTree()
tree.printTree()
Объяснение:
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
MiladKowalska07.03.2021 23:59
-
lotostp19.08.2021 17:23
-
Violetta29127.02.2023 05:01
-
мивое30.07.2021 22:27
-
мага09225.05.2021 17:30
-
katyusha151411119.05.2020 16:15
-
Akmeyir25.08.2021 05:29
-
vikki0109210.04.2020 19:57
-
Amirkazakov06.04.2020 08:04
-
Pwdrddiwkekfiwldkeie19.08.2020 17:53
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.