Skip to content

Skeltex/tree-visualizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tree Visualizer

Интерактивный визуализатор алгоритмов деревьев поиска: BST, AVL, Red-Black и Splay. Проект демонстрирует вставку, удаление и поиск в различных структурах данных в реальном времени с плавной анимацией.

🚀 Основные возможности

  • 4 типа деревьев:
    • BST: стандартное бинарное дерево поиска.
    • AVL: самобалансирующееся дерево с гарантированным временем поиска O(log n).
    • Red-Black: красно-чёрное дерево с балансировкой через перекраску и вращения.
    • Splay: дерево с самоорганизацией, перемещающее часто используемые узлы к корню.
  • Интерактивная визуализация: анимация поворотов, перекраски и структурных изменений.
  • Архитектура MVC: чёткое разделение модели, представления и контроллера.
  • Тестирование: unit-тесты проверяют инварианты и корректность балансировки.

🛠 Технологический стек

  • Язык: Python 3.10+
  • GUI: PySide6 (Qt)
  • Зависимости: uv
  • Тесты: Pytest

📦 Быстрый старт

Установка

Если uv ещё не установлен, выполните:

pip install uv

Клонирование и запуск

git clone git@github.com:Skeltex/tree-visualizer.git
cd tree-visualizer
uv run main.py

Команда uv run автоматически создаст виртуальное окружение, синхронизирует зависимости по uv.lock и запустит приложение.

Тестирование

Запустите все тесты:

uv run pytest -v

📂 Структура проекта

  • core/ — алгоритмы деревьев и модели данных.
  • gui/ — графические компоненты на PySide6 (узлы, линии, сцена).
  • controller/ — логика анимации и синхронизация модели с визуализацией.
  • tests/ — unit-тесты для проверок корректности деревьев.
  • pyproject.toml — конфигурация проекта.
  • uv.lock — зафиксированные версии зависимостей.

About

No description, website, or topics provided.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages