Algorithm 创建平衡二叉搜索树的时间复杂度?

Algorithm 创建平衡二叉搜索树的时间复杂度?,algorithm,data-structures,heap,binary-search-tree,avl-tree,Algorithm,Data Structures,Heap,Binary Search Tree,Avl Tree,尽管构建min堆的时间复杂度看起来像O(nlogn),但可以证明它是 为什么我们不能应用相同的逻辑,并说平衡二叉搜索树的时间复杂度也是O(n)。除了BST提供顺序这一事实之外,而heap只确保元素大于下面的元素(对于max heap),构建堆的复杂度取决于构建策略。这清楚地表明了这一点 如果使用siftDown(自下而上)方法,复杂性是O(n),而siftUp的复杂性是O(nlogn),就像在BST中一样 为什么我们不能应用同样的逻辑,说一个系统的时间复杂性 平衡二叉搜索树也是O(n) 构建堆的

尽管构建min堆的时间复杂度看起来像O(nlogn),但可以证明它是


为什么我们不能应用相同的逻辑,并说平衡二叉搜索树的时间复杂度也是O(n)。

除了BST提供顺序这一事实之外,而heap只确保元素大于下面的元素(对于max heap),构建堆的复杂度取决于构建策略。这清楚地表明了这一点

如果使用
siftDown
(自下而上)方法,复杂性是
O(n)
,而
siftUp
的复杂性是
O(nlogn)
,就像在BST中一样

为什么我们不能应用同样的逻辑,说一个系统的时间复杂性 平衡二叉搜索树也是O(n)


构建堆的自底向上方法不适用于BST,除非输入列表已经排序,但在这种情况下,由于排序的原因,您已经有了
O(nlogn)
复杂性。

除了BST提供顺序之外,而堆只确保元素大于下面的元素(对于最大堆),构建堆的复杂性取决于构建策略。这清楚地表明了这一点

如果使用
siftDown
(自下而上)方法,复杂性是
O(n)
,而
siftUp
的复杂性是
O(nlogn)
,就像在BST中一样

为什么我们不能应用同样的逻辑,说一个系统的时间复杂性 平衡二叉搜索树也是O(n)


除非输入列表已经排序,否则自底向上构建堆的方法不适用于BST,但在这种情况下,由于排序的原因,您已经有了
O(nlogn)
复杂性。

@Mikic,您还没有添加image.Understand。谢谢:)@Mikic,你还没有添加图像。明白了。谢谢:)(构建平衡BST的时间复杂度也取决于输入数据:如果您的n个输入项已排序(并且,根据细节,可随机访问)。(构建平衡BST的时间复杂度也取决于输入数据:如果您的n个输入项已排序(并且,根据细节,可随机访问)。)