在this implementation of a splay tree中,列出的makeEmpty()
函数(删除所有元素)的时间复杂度为O(n)。它实现如下:
while( !isEmpty( ) )
{
findMax( ); // Splay max item to root
remove( root->element );
}
鉴于findMax
和remove
的时间复杂度可能与树的高度成正比,为什么在最坏情况下需要花费O(n)时间?
谢谢!
答案 0 :(得分:3)
三个词:顺序访问定理。
http://www.wseas.us/e-library/conferences/cairns2001/papers/632.pdf
因为上面的循环反复删除了最大值,所以它有效地按顺序访问了所有元素,所以我很确定顺序访问定理适用。