Предмет: Информатика, автор: janekxzy

Даю 100 баллов
Массив из 100 элементов, построить бинарное дерево, без использования функции мин и макс на python

Ответы

Автор ответа: devpaul
0

Ответ:

Python:

# Класс узла

class Node:

# Конструктор класса

def __init__(self, value):

# Значение узла

self.value = value

# Левый потомок

self.left = None

# Правый потомок

self.right = None

# Функция для вставки узла в дерево

def insert(node, value):

# Если узел не существует, создаем новый

if node is None:

return Node(value)

# Если значение узла больше или равно вставляемому значению, вставляем узел в левого потомка

if node.value >= value:

node.left = insert(node.left, value)

# Иначе вставляем узел в правого потомка

else:

node.right = insert(node.right, value)

return node

# Функция для создания двоичного дерева

def build_binary_tree(arr):

# Корень дерева

root = None

# Перебираем все элементы массива

for value in arr:

# Добавляем элементы в дерево

root = insert(root, value)

return root

# Массив элементов

array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..., 100]

# Создаем дерево

tree = build_binary_tree(array)


janekxzy: line 4 and line 2 error
Автор ответа: sprikeyt
0

class Node:

   def __init__(self, data):

       self.data = data

       self.left = None

       self.right = None

class BinaryTree:

   def __init__(self, data):

       self.root = Node(data)

   

   def insert(self, data):

       if self.root is None:

           self.root = Node(data)

       else:

           self._insert(data, self.root)

   

   def _insert(self, data, node):

       if node is None:

           return Node(data)

       if data < node.data:

           node.left = self._insert(data, node.left)

       else:

           node.right = self._insert(data, node.right)

       return node

Можно добавить элементы в дерево, вызывая Insert:

tree = BinaryTree(50)

tree.insert(30)

tree.insert(20)

tree.insert(40)

tree.insert(70)

tree.insert(60)

tree.insert(80)

Похожие вопросы
Предмет: Математика, автор: Аноним
помогите пожалуйста это СОЧ!!!!!!
3. На координатной плоскости
постройте график прямой пропорциональности y=-2x
[1балл]

4. В кондитерской «Капучино» в течение 13 дней фиксировалось количество заказов с доставкой на дом. Получили такой ряд данных: 29, 23, 35, 25, 3, 40, 39, 38, 35, 33, 40, 44, 35. Найдите размах, среднее арифметическое, моду и медиану полученного ряда.
[5баллов]

5. На рисунке изображен график движения пешехода из пункта В в пункт Е. Используя график,

рисунок в верху!!!!

Ответьте на вопросы Рассмотрев график, ответьте на вопросы:
А) На каком расстоянии от дома был пешеход через 4 часа после выхода из пункта В?
Б) Сколько времени длился привал?
В) Сколько часов был турист в пути, когда до дома осталось пройти 5км?
Г) С какой скоростью шёл турист первые два часа?
[4балла]

5. Сумма двух чисел равна 81, а их разность равна 15. Найдите эти числа.
[5баллов]

6. Решите систему уравнений:
{ y=5x
{ 5x=y=20
[3 баллов]​