Top-Down splay树的makeEmpty()的时间复杂度

时间:2013-11-10 06:00:08

标签: c++ data-structures big-o time-complexity splay-tree

this implementation of a splay tree中,列出的makeEmpty()函数(删除所有元素)的时间复杂度为O(n)。它实现如下:

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

鉴于findMaxremove的时间复杂度可能与树的高度成正比,为什么在最坏情况下需要花费O(n)时间?

谢谢!

1 个答案:

答案 0 :(得分:3)

三个词:顺序访问定理。

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

因为上面的循环反复删除了最大值,所以它有效地按顺序访问了所有元素,所以我很确定顺序访问定理适用。