АВЛ ДЕРЕВО PYTHON
AVL-дерево - это двоичное дерево поиска, которое имеет высоту O(log n), где n - количество узлов в дереве. Отличительной особенностью AVL-дерева является балансировка высоты поддеревьев. Это достигается путем вращения поддеревьев, когда разница высоты поддеревьев становится больше, чем заданный лимит.
class Node: def __init__(self, key): self.left = None self.right = None self.key = key self.height = 1class AVLTree: def insert(self, root, key): if not root: return Node(key) elif key < root.key: root.left = self.insert(root.left, key) else: root.right = self.insert(root.right, key) root.height = 1 + max(self.getHeight(root.left), self.getHeight(root.right)) balance = self.getBalance(root) if balance > 1 and key < root.left.key: return self.rightRotate(root) if balance < -1 and key > root.right.key: return self.leftRotate(root) if balance > 1 and key > root.left.key: root.left = self.leftRotate(root.left) return self.rightRotate(root) if balance < -1 and key < root.right.key: root.right = self.rightRotate(root.right) return self.leftRotate(root) return root def leftRotate(self, z): y = z.right T2 = y.left y.left = z z.right = T2 z.height = 1 + max(self.getHeight(z.left), self.getHeight(z.right)) y.height = 1 + max(self.getHeight(y.left), self.getHeight(y.right)) return y def rightRotate(self, z): y = z.left T3 = y.right y.right = z z.left = T3 z.height = 1 + max(self.getHeight(z.left), self.getHeight(z.right)) y.height = 1 + max(self.getHeight(y.left), self.getHeight(y.right)) return y def getHeight(self, root): if not root: return 0 return root.height def getBalance(self, root): if not root: return 0 return self.getHeight(root.left) - self.getHeight(root.right)
В этом примере кода представлен класс AVLTree, который содержит три метода: вставка, левый поворот и правый поворот. Мы также используем класс Node для представления узлов дерева. Методы вставки, левого и правого поворота будут вызываться в зависимости от текущего баланса высот поддеревьев. Если баланс больше заданного лимита, мы выполняем повороты. Этот пример демонстрирует основную концепцию AVL-дерева и может быть изменен и дополнен в соответствии с требованиями конкретных задач.
Daniel Liang Python Video Section 20.5 AVL Tree Implementing Rotations
Binary Search Trees: Using Python for BST and AVL
Задача из Собеседования в Microsoft (Бинарные Деревья)
Поворот бинарного дерева
АиСД S02E05. Дерево поиска, AVL-дерево
#20. Реализация бинарного дерева на Python - Структуры данных
L-система. Создание фракталов. (Python)
АВЛ дерево. основные операции
ФМХФ МФТИ - Информатика, семестр 2, лекция 8
AVL Tree: Background \u0026 Python Code
Новые материалы:
- Фаренгейты в цельсии python
- Int object is not callable python что значит
- Объединение csv файлов в один python
- Python размытие изображения
- Как удалить строку в csv файле python
- Как приравнять массивы python
- Python sqlalchemy postgresql примеры
- Docx python разрыв страницы
- Не работает django admin
- Как отправить фото aiogram python
- Python и word
- Гематрия по английски python
- Python строку в байты