如果树是平衡的,在二叉搜索树中搜索的时间复杂度是多少?

时间:2016-12-09 07:12:58

标签: algorithm search tree time-complexity

给出的答案是O(nlog(n)),但我也在维基百科上查找它,它说它是log(n)。

哪一个是正确的?

搜索不平衡二叉树的最坏情况是什么?

4 个答案:

答案 0 :(得分:5)

平衡二叉搜索树中单个搜索的时间复杂度为Article.order('amazon_title DESC NULLS FIRST') 。也许问题要求您在二叉树中进行Article.order('amazon_title DESC NULLS LAST') 次搜索,因此总复杂度为O(log(n))

非平衡二叉搜索树中单个搜索的最坏情况复杂度为n。同样,如果您在不平衡树中进行O(nlog(n))次搜索,则总体复杂性将变为O(n)

答案 1 :(得分:1)

在O(log(n))中以平衡BST搜索的平均时间复杂度。

在非平衡二叉树中搜索的最坏情况复杂度是O(n)。

答案 2 :(得分:0)

平衡二进制搜索树的时间复杂度为logN,如维基百科中所述,因为当它横向树时,它向左或向右移动,消除整棵树的一半。对于不平衡的二进制搜索树,时间复杂度为O(n),它基本上类似于线性搜索。

要进行树平衡,您可以使用一种red-black算法,AVL算法或其他几种算法。

答案 3 :(得分:0)

在任何二叉搜索树中,花费的时间复杂度为O(h),其中h是树的高度。 由于已知树是平衡二叉搜索树,因此在最坏情况下搜索元素为O(logn)。