创建平衡二叉搜索树的时间复杂度?
Time complexity of the creation of a Balanced binary search tree?
虽然构建一个最小堆的时间复杂度看起来是O(nlogn),但可以证明是O(n)。
为什么我们不能套用同样的逻辑,说平衡二叉搜索树的时间复杂度也是O(n)。
除了BST提供顺序,而堆只保证元素大于下面的元素(对于最大堆),堆的构建复杂度取决于构建策略。这个wiki image证明的很清楚。
如果使用 siftDown
(自下而上)方法,复杂度为 O(n)
,而使用 siftUp
则为 O(nlogn)
,就像 BST 一样。
Why can't we apply the same logic and say the time complexity of a
balanced binary search tree is also O(n)?
构建堆的自下而上方法不适用于 BST,除非输入列表已经排序,但在这种情况下,由于排序,您已经具有 O(nlogn)
复杂性。
虽然构建一个最小堆的时间复杂度看起来是O(nlogn),但可以证明是O(n)。
为什么我们不能套用同样的逻辑,说平衡二叉搜索树的时间复杂度也是O(n)。
除了BST提供顺序,而堆只保证元素大于下面的元素(对于最大堆),堆的构建复杂度取决于构建策略。这个wiki image证明的很清楚。
如果使用 siftDown
(自下而上)方法,复杂度为 O(n)
,而使用 siftUp
则为 O(nlogn)
,就像 BST 一样。
Why can't we apply the same logic and say the time complexity of a balanced binary search tree is also O(n)?
构建堆的自下而上方法不适用于 BST,除非输入列表已经排序,但在这种情况下,由于排序,您已经具有 O(nlogn)
复杂性。