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()
Объяснение:
Перебрать во внешнем цикле числа от 1 до 9. Для каждого из них перебрать во внутреннем цикле числа от 1 до 9. Во внутреннем цикле выполнять умножение переменных-счетчиков внешнего и внутреннего циклов. Таким образом на одну итерацию внешнего цикла произойдет девять итераций внутреннего, и сформируется одна строка таблицы умножения. После каждой строки надо перейти на новую. Это делается во внешнем цикле, после того как закончится выполняться внутренний.
Для построения таблицы необходимо использовать форматированный вывод, т.е. задавать ширину столбцов, иначе произойдет сдвиг, т.к. количество цифр в каждой строке различно.