Сложность по времени для makeEmpty () дерева сплайсинга сверху вниз

В эта реализация Splay Tree, перечисленная временная сложность makeEmpty() функция (которая удаляет все элементы) — это O (n). Это реализовано следующим образом:

 while( !isEmpty( ) )
{
findMax( );        // Splay max item to root
remove( root->element );
}

Учитывая, что оба findMax а также remove может иметь временную сложность, пропорциональную высоте дерева, почему это займет O (n) время в худшем случае?

Спасибо!

1

Решение

Три слова: теорема о последовательном доступе.

http://www.wseas.us/e-library/conferences/cairns2001/papers/632.pdf

Поскольку вышеприведенный цикл неоднократно удаляет максимальное значение, он эффективно посещает все элементы в последовательности, и поэтому я почти уверен, что применима теорема о последовательном доступе.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]