PYTHON ДЕКАРТОВО ДЕРЕВО
Декартово дерево (Treap) -- это комбинированная структура данных, которая объединяет в себе две структуры: бинарное дерево поиска (binary search tree) и кучу (heap). Используется для быстрого выполнения операций вставки, удаления и поиска элементов.
Достоинством декартова дерева является возможность настройки приоритетов, что позволяет оптимизировать обычные операции бинарного дерева поиска.
Основными операциями над декартовым деревом являются: вставка, удаление, нахождение k-того по величине элемента, поиск элемента и объединение двух деревьев.
import randomclass TreapNode: def __init__(self, key): self.key = key self.priority = random.randint(1, 100) self.left = None self.right = Noneclass Treap: def __init__(self): self.root = None def split(self, treap, key): if treap is None: return None, None if treap.key <= key: left, right = self.split(treap.right, key) treap.right = left return treap, right else: left, right = self.split(treap.left, key) treap.left = right return left, treap def merge(self, t1, t2): if t1 is None: return t2 if t2 is None: return t1 if t1.priority > t2.priority: t1.right = self.merge(t1.right, t2) return t1 else: t2.left = self.merge(t1, t2.left) return t2 def insert(self, key): left, right = self.split(self.root, key) self.root = self.merge(self.merge(left, TreapNode(key)), right) def erase(self, key): l, r = self.split(self.root, key-1) m, r = self.split(r, key) self.root = self.merge(l, r) def search(self, key): cur = self.root while cur is not None and cur.key != key: if cur.key < key: cur = cur.right else: cur = cur.left return cur is not None
Лекция 1. Декартово дерево
Двоичное дерево, куча, начало декартово дерева. Реализация на Python Запись занятия 2021-11-01
АиСД S02E06. Декартово дерево, дерево по неявному ключу
Декартово дерево: правила построения и базовые операции
Тренировки по алгоритмам от Яндекса. Лекция 8: «Деревья»
Задача из Собеседования на 160,000 Евро в Год
Работа с иерархическими структурами в Python [Хекслет]
#20. Реализация бинарного дерева на Python - Структуры данных
Декартово дерево (имлементация на Python)
АиСД S02E06. Декартово дерево, дерево по неявному ключу
Новые материалы:
- Чат на django
- Python urllib2 как установить
- Как вывести нечетные числа в python
- Функция help в python
- Как посчитать количество элементов в списке python
- Python конвертация mp3 в wav
- Эконометрика в python
- Календарь на python код
- Алгоритм куна python
- Django древовидное меню
- Метод ритца python
- Debian python установка