Есть ответ 👍

Измените код программы представленный ниже, так чтобы программа вывела количество узлов, рёбер и листьев в дереве(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))

255
344
Посмотреть ответы 2

Ответы на вопрос:


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()

Объяснение:

Shvets73
4,7(56 оценок)

2. 5 кбайт 3. 32 символа

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS