Сложность по времени 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

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

Другие вопросы по тегам