Data structures 堆和红黑树有什么区别?

Data structures 堆和红黑树有什么区别?,data-structures,heap,red-black-tree,Data Structures,Heap,Red Black Tree,我们知道堆和红黑树都具有以下属性: 搜索的最坏情况成本为lgN 插入的最坏情况成本是lgN 所以,既然红黑树的实现和操作很困难,为什么我们不使用堆而不是红黑树呢?我很困惑。红黑树: 具有确定性平衡策略的二叉搜索树的形式。这种平衡保证了良好的性能,并且始终可以在O(logn)时间内搜索它 堆: 我们需要搜索堆中的每个元素,以确定其中是否有元素。即使有优化,我相信搜索仍然是O(N)。另一方面,最好在集合O(1)中找到最小/最大值 在O(log n)中找不到堆中的任意元素。执行此操作需要O(n)。您可

我们知道堆和红黑树都具有以下属性:

  • 搜索的最坏情况成本为lgN
  • 插入的最坏情况成本是lgN
  • 所以,既然红黑树的实现和操作很困难,为什么我们不使用堆而不是红黑树呢?我很困惑。

    红黑树:
    具有确定性平衡策略的二叉搜索树的形式。这种平衡保证了良好的性能,并且始终可以在O(logn)时间内搜索它

    堆:

    我们需要搜索堆中的每个元素,以确定其中是否有元素。即使有优化,我相信搜索仍然是O(N)。另一方面,最好在集合O(1)中找到最小/最大值

    O(log n)
    中找不到堆中的任意元素。执行此操作需要
    O(n)
    。您可以在
    O(1)
    中找到堆中的第一个元素(比如最小的元素),并在
    O(logn)
    中提取它。红黑树和堆有着完全不同的用途、内部顺序和实现:请参阅下面的详细信息

    典型用途

    红黑树:将字典存储在您希望元素按键排序的位置以及查找位置,以便您可以按顺序遍历这些元素。插入和查找是
    O(log n)

    堆:优先级队列(和堆排序)。最小值的提取和插入是
    O(logn)

    结构施加的一致性约束

    红黑树:总排序:左子级<父级<右子级

    堆:优势:仅限父级<子级


    (请注意,您可以使用比共享算法更一般的排序替换
    O(log(N))
    在堆中搜索?正如我记得的,您不能在
    O(log(N))
    中在堆中搜索。我们不知道“第一属性”。