AVL-деревья в JavaScript для начинающих
NoobCoder
0:00 / 0:00
AVL-деревья в JavaScript для начинающих
3 006 просмотров · 5 лет назад
NoobCoder
8,29 тыс. подписчиков
3 006 просмотров · 5 лет назад
В этом уроке мы рассмотрим AVL-дерево в JavaScript. AVL-дерево — это дерево с сбалансированной высотой. В таком дереве никакие два поддерева внутри него не отличаются по высоте более чем на 1. Поддержание баланса дерева ускоряет время поиска, поскольку в бинарном дереве поиска дерево может в конечном итоге сместиться влево или вправо. AVL-дерево поддерживает этот баланс высот с помощью поворотов. Выбор поворота зависит от коэффициента баланса узла, который представляет собой разницу между высотой левого и правого поддеревьев. В видео мы рассмотрим 4 случая, когда может произойти поворот.
NoobCoder.com
Исходный код:
https://github.com/noobcoder1137/data...
Временные метки:
0:00: Вступление
0:20: Искаженное дерево поиска (BST)
0:41: Что такое сбалансированное по высоте дерево, определения высоты
1:16: Пример сбалансированных по высоте деревьев
2:50: Определение коэффициентов баланса
3:39: Примеры вычисления коэффициентов баланса
7:09: Задача: случай «лево-лево», решение: поворот вправо
9:13: Задача: случай «право-право», решение: поворот влево
10:30: Задача: случай «лево-право», решение: поворот влево, затем поворот вправо
12:28: Задача: случай «право-лево», решение: поворот вправо, затем поворот влево
14:16: Случай «лево-лево»: обработка поддеревьев при повороте
14:51 : Случай «справа-справа»: обработка поддеревьев при вращении
15:15 : Случай «слева-справа»: обработка поддеревьев при вращении
15:54 : Случай «справа-слева»: обработка поддеревьев при вращении
16:36 : Код конструкторов AVL
17:15 : Код вспомогательных методов: getHeight, getBalance
17:41 : Код поворота влево
18:24 : Код поворота вправо
18:55 : Обзор кода вставки
23:41 : Пример пошагового выполнения кода вставки
28:27 : Обзор кода удаления
30:42 : Пример пошагового выполнения кода удаления