考虑使用以下算法,该算法使用二叉搜索树对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)
答案 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)
。