• Предмет: Информатика
  • Автор: janekxzy
  • Вопрос задан 4 месяца назад

Даю 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)

Вас заинтересует