Recursion 渐近时间复杂度,大oh和θ分析。这是一个诡计多端的问题吗

Recursion 渐近时间复杂度,大oh和θ分析。这是一个诡计多端的问题吗,recursion,big-o,binary-search-tree,complexity-theory,traversal,Recursion,Big O,Binary Search Tree,Complexity Theory,Traversal,问题是: 考虑以下排序算法:I.将给定的输入A[1]、A[2]、…、A[n]按给定顺序插入到二叉搜索树T中,从空树开始;二,。按顺序遍历T,以非降序输出元素。(a) 算法的最坏情况是什么时候?(b) 算法的最佳情况时间是什么 我的答覆是: 我在t(n)=2(n/2)+n中创建了一个BST,因为我们必须遍历每个元素,然后我还以t(n)=2(n/2)+n的顺序打印了BST,因为我们同样必须遍历每个元素。然后我把时间复杂度加在一起,以,t(n)=4(n/2)+2n结尾 根据Master的方法,这符合案

问题是:

考虑以下排序算法:I.将给定的输入A[1]、A[2]、…、A[n]按给定顺序插入到二叉搜索树T中,从空树开始;二,。按顺序遍历T,以非降序输出元素。(a) 算法的最坏情况是什么时候?(b) 算法的最佳情况时间是什么

我的答覆是:

我在
t(n)=2(n/2)+n
中创建了一个BST,因为我们必须遍历每个元素,然后我还以
t(n)=2(n/2)+n
的顺序打印了BST,因为我们同样必须遍历每个元素。然后我把时间复杂度加在一起,以,
t(n)=4(n/2)+2n
结尾

根据Master的方法,这符合案例1。使之成为θ(n^2)。如果它是θ(n^2),这就同时回答了问题的a和b。我不认为会有更好的表现,或者在这种情况下会有更糟糕的表现


这是一个技巧性问题吗?

简短回答

您添加了两个方程式的RHS,但没有添加LHS–它应该是
2T(n)

当然,
T(n)
的口头描述是“时间复杂度函数”,但它是什么?在这种情况下,应该考虑BST创建或顺序遍历的时间复杂性,而不是两者同时进行

因此最终结果是
2T(n)=4T(n/2)+2n
。取消2,您将得到
O(n log n)


tl;博士回答

但是,等等,为什么还要进行遍历呢?只有
n
元素,对吗

通过将问题分成两等分
T(n/2)
,您隐含地假设树在每次插入后是平衡的。对于简单的非自平衡BST树实现,情况并非总是如此。如果树“倾斜”到一侧,则插入可能与
O(n)
(即
O(n^2)
构造)一样多

幸运的是,对于最常用的自平衡树类型,例如红黑和AVL,插入保证
O(logn)
或更低。因此,树构造的正确递归关系是
T(n)=T(n-1)+logn
,其结果是
O(n logn)
(斯特林方程)


尽管如此,任何BST的遍历,无论是否平衡,都是
O(n)
,因为只有
n
元素。这意味着遍历的递归关系是错误的-它应该是
T(n)=2T(n/2)+1
,因为每个节点只做
O(1)
工作。

在平衡二叉树中插入一个元素不应该是
log\u 2n
。通过插入排序序列创建的二叉树不应该产生一个看起来像链表的树吗(插入总是在最后,所以单个项目是O(n)),这很有意义。非常感谢。