Асимптотическая вставка и поиск времени выполнения в AVL

#algorithm #data-structures #avl-tree

#алгоритм #структуры данных #avl-дерево

Вопрос:

Я изучаю деревья AVL. Деревья AVL — это бинарные деревья поиска, которые балансируют себя посредством поворотов. Поскольку они сбалансированы, время запроса равно O (log n). Но порядок, в котором добавляются записи, также важен, чтобы избежать наихудшего случая O (log n) поворотов за вставку.

Каково асимптотическое время выполнения:

(a) добавление n записей с последовательными ключами в дереве AVL (время для вставки всех, а не каждого из них)

б) поиск ключа, которого нет в дереве.

Насколько я понимаю, эта высота равна O (log N), поэтому вставка в дерево AVL имеет наихудший случай O (log N). Поиск Авл дерево является абсолютно неизменным часов по британскому летнему времени, и поэтому тоже требует времени, пропорционального длине дерева, что делает o(зарегистрируйте N).

Правильно ли это?

Ответ №1:

Для вставки в AVL требуется не более одного оборота, а не O (log n) оборотов (два, если считать двойные обороты по отдельности). Асимптотически порядок вставки не имеет значения, поскольку вращение занимает постоянное время.

а) при n вставке стоимость = n * (стоимость поиска подходящего места для вставки фактическое создание и вставка узла вращение, если необходимо) = n * (O (log n) O (1) O (1)) = O (n log n)

б) поиск элемента равен O (log n), поскольку дерево сбалансировано

c) для удаления одного элемента требуется не более O (log n) оборотов, поэтому сложность удаления также равна O (log n)