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

misterpordon misterpordon    2   05.03.2021 16:30    0

Ответы
dilnoza55 dilnoza55  05.03.2021 16:40

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

Объяснение:

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика