下面我有一个基本的算法,我知道最坏的情况输入BST是从插入到单侧的退化到链表的。
如何根据此BST到AVL转换算法的转数计算最坏情况复杂度?
IF tree is right heavy
{
IF tree's right subtree is left heavy
{
Perform Double Left rotation
}
ELSE
{
Perform Single Left rotation
}
}
ELSE IF tree is left heavy
{
IF tree's left subtree is right heavy
{
Perform Double Right rotation
}
ELSE
{
Perform Single Right rotation
}
}
答案 0 :(得分:0)
如果单次和双次旋转需要恒定时间O(1)
,那么对于大小为n
的最坏情况输入,它将执行单次(或双倍,具体取决于您的输入链表是否为左侧)或所有节点上的右侧)。所以它会是:
O(1) + O(1) + ... + O(1) # n times for worst case
这使您的算法O(n)
成为最坏的情况。