
- •Теоретическая часть
- •Основные операции с авл-деревом
- •Вставка:
- •Удаление
- •Балансировка после вставки/удаления:
- •Верхняя оценка высоты авл-дерева
- •Красно-черное дерево (rb Tree)
- •Основные операции с красно-черным деревом
- •Балансировка дерева после вставки:
- •Балансировка дерева после удаления:
- •Верхняя оценка высоты красно-черного дерева
- •Практическая часть Асимптотика Бинарное дерево поиска (bst)
- •Лучший случай:
- •Средний случай:
- •Худший случай:
- •Зависимость высоты дерева от количества ключей Бинарное дерево поиска
- •Красно-черное дерево
- •Обходы дерева
- •Обход дерева в ширину
- •Обход дерева в глубину Прямой обход или preorder
- •Симметричый (центрированный) обход или inorder
- •Обратный обход или postorder
- •Код программы Графики для Бинарного дерева поиска:
- •Бинарное дерево поиска:
- •Графики для авл-дерева
- •Графики для кч-дерева
- •Обход деревьев
Обход деревьев
from BSTree import BST_func
bst = BST_func()
root = None
keys = [45,63,29,9,74,51,32,3,12,30,40,49,59,66,80]
kheys = []
for key in keys:
root = bst.insert(root, key)
print('Введите 1')
y = int(input())
while y == 1:
print('\n\nКлючи, которые добавлялись в дерево:')
print(keys)
print('Высота дерева:',bst.height_of_tree(root))
r = bst.level_order_traversal(root)
print('Выберите обход: 1 - в ширину, 2 - прямой, 3 - симметричный, 4 - обратный, 5 - выход')
w = int(input())
if w == 1:
print("\nОбход в ширину:")
for i in r:
print(i, end = ' ')
if w == 2:
print("\nПреордерный обход:")
bst.preorder(root)
if w == 3:
print("\nСимметричный обход:")
bst.inorder(root)
if w == 4:
print("\nПостордерный обход:")
bst.postorder(root)
if w == 5: break