虽然构建最小堆的时间复杂度看起来像O(nlogn),但可以证明它是O(n)。
为什么我们不能应用相同的逻辑,并且说平衡二叉搜索树的时间复杂度也是O(n)。
答案 0 :(得分:2)
除了BST提供顺序这一事实,而堆只确保元素大于下面的元素(对于最大堆),构建堆的复杂性取决于构建策略。这个wiki image清楚地证明了这一点。
如果您使用siftDown
(自下而上)方法,则复杂度为O(n)
,而siftUp
为O(nlogn)
,就像在BST中一样。
为什么我们不能应用相同的逻辑并说出时间复杂度 平衡二叉搜索树也是O(n)?
构建堆的自下而上方法不适用于BST,除非输入列表已经排序,但在这种情况下,由于排序,您已经具有O(nlogn)
复杂性。