【发布时间】:2017-01-07 10:38:21
【问题描述】:
用给定的任意 N 个元素构建二叉搜索树的最坏情况时间复杂度是多少?
我认为 N 个给定元素和 一个接一个出现的元素之间存在差异,从而产生总共 N 个元素的 BST。
在前一种情况下,它是 O(n log n) ,在第二种情况下是 O(n^2) 。我说的对吗?
【问题讨论】:
-
一个一个地取元素,然后一次性处理整个事情有什么不同?
-
我认为,后一种情况可以构建一个 Skewed BST ,从而具有 O(n^2)
-
一个接一个地接受数字在时间上是 O(n),在空间上是 O(n)。您现在可以对它们进行排序,并在 O(n*log n) 中构建一棵完美的树。如果您必须随时构建树(即输入没有额外的 O(n) 空间可用),那么在 O(n^2) 最坏的情况下,您最终可能会得到一个不平衡的树。
-
是的,这对我来说更清楚。一切都与空间有关。如果我没有空间容纳整数,那么它会产生倾斜,否则,我可以将它们全部收集并存储以排序并获得平衡树,对吗?
-
完全正确。
标签: algorithm binary-search-tree