最坏情况BST到AVL算法的转数?

时间:2012-06-04 14:36:33

标签: algorithm time-complexity binary-search-tree avl-tree

下面我有一个基本的算法,我知道最坏的情况输入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
  }
}

1 个答案:

答案 0 :(得分:0)

如果单次和双次旋转需要恒定时间O(1),那么对于大小为n的最坏情况输入,它将执行单次(或双倍,具体取决于您的输入链表是否为左侧)或所有节点上的右侧)。所以它会是:

O(1) + O(1) + ... + O(1) # n times for worst case

这使您的算法O(n)成为最坏的情况。