TGViewer
Библиотека шарписта | C#, F#, .NET, ASP.NET Библиотека шарписта | C#, F#, .NET, ASP.NET @csharpproglib · 21.6K subscribers
Post #5625 5.14K
🌲 AVL-дерево в C#

AVL-дерево — это самобалансирующееся бинарное дерево поиска, в котором:

• Баланс-фактор (разница высот левого и правого поддерева) каждого узла равен -1, 0 или 1.

• При нарушении баланса выполняется ротация (левая, правая или двойные) для восстановления баланса.

Баланс-фактор (BF) узла вычисляется так:
BF = Height(Left) - Height(Right)

• BF = 0, 1 или -1 — дерево сбалансировано.
• BF > 1 — перегрузка слева.
• BF < -1 — перегрузка справа.

🤔 Что такое ротация в деревьях?


Ротация — это операция, которая переставляет узлы в бинарном дереве, изменяя их структуру без нарушения свойств дерева.

Когда высота левого и правого поддерева отличается более чем на 1, дерево становится разбалансированным. Это снижает эффективность операций поиска, вставки и удаления.

Виды ротаций в AVL-дереве:

1️⃣ Правое вращение

Применяется, когда перегрузка слева (BF > 1) и новый узел добавлен в левое поддерево левого потомка.

Простой пример:
    C
/
B
/
A

После правого вращения:
    B
/ \
A C


2️⃣Левое вращение

Применяется, когда перегрузка справа (BF < -1) и новый узел добавлен в правое поддерево правого потомка.

Пример:
A
\
B
\
C

После левого вращения:
  B
/ \
A C


3️⃣ Лево-правое вращение

Используется при перегрузке слева, если новый узел добавлен в правое поддерево левого потомка.

Сначала выполняется левое вращение для левого потомка.
Затем правое вращение для корня.

4️⃣ Право-левое вращение

Используется при перегрузке справа, если новый узел добавлен в левое поддерево правого потомка.

Сначала выполняется правое вращение для правого потомка.
Затем левое вращение для корня.

🐸Библиотека шарписта
  • 👍 18
  • ❤ 5
  • 🌚 3
  • 👾 1
More from @csharpproglib
  1. Oct 10, 2026Post #7285
  2. Oct 10, 2026Перенос MiniJinja с Rust на Go силами Opus и Codex Около десяти часов работы агента и прим…
  3. Oct 7, 2026Альфа-Банк ищет скиллового коллегу QA Fullstack на C# Полная удалёнка или гибрид в Москве,…
  4. Sep 30, 2026📝 Логирование со строковой интерполяцией Логирование c интерполяцией строк один из самых…
  5. Sep 28, 2026👨‍💻 Не показывайте технические ошибки пользователям Когда приложение падает с необработа…
  6. Sep 26, 2026📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #garbage_collector
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →