使用AVL树和二叉树的此算法的时间复杂度是多少?

时间:2014-12-21 20:58:15

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

考虑使用以下算法,该算法使用二叉搜索树对n个元素的列表进行排序:

initialise t to be an empty binary search tree
for each element x in the list,
  add x to t
while t is not empty,
  remove and print the smallest element of t

如果树是,该算法的最坏情况时间复杂度是多少 使用:

实施

a)普通的二叉搜索树?
b)AVL树?

我的解决方案:我认为解决方案是什么,对于AVL树:O(Log N)和BST,它将是O(N)

2 个答案:

答案 0 :(得分:4)

这些树的插入/删除的最坏情况是BST的O(n)和AVL的O(log(n))

如果列表的长度为n,则会n次插入和n删除,这意味着我们将O(n^2)与BST和O(nlog(n))与AVL一起使用。

答案 1 :(得分:1)

所有BST的时间复杂度为O(h),其中h是BST的高度。如果列表包含n元素,则时间复杂度将为O(n),因为它将执行n insertions and deletions。虽然AVL是自平衡二叉搜索树,但高度为O(logn) ,因此插入和删除的时间复杂度为O(logn)