Перейти к содержимому

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 : Пример пошагового выполнения кода удаления