给出的答案是O(nlog(n)),但我也在维基百科上查找它,它说它是log(n)。
哪一个是正确的?
搜索不平衡二叉树的最坏情况是什么?
答案 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)。