我可以将红黑树表示为数组吗?

时间:2017-03-04 23:48:28

标签: c arrays data-structures red-black-tree

是否值得将红黑树表示为数组以消除内存开销。或者阵列会占用更多内存,因为阵列将有空插槽?

2 个答案:

答案 0 :(得分:1)

它既有正面也有负面。这个答案适用于C [因为你提到这是你将要使用的]

积极的一面

  1. 让我们假设您已创建一个数组作为将用于红黑树的对象池。在找到位置时删除元素或初始化新元素会有点快,因为您可能会使用自己创建的内存池。
  2. 否定方

    1. 是的,数组很可能最终占用更多内存,因为有时阵列会有空插槽。
    2. 在这种情况下,你必须确定红黑树的MAX大小。所以尺寸有限制。
    3. 您没有使用顺序内存空间的好处,因此可能会浪费资源。

答案 1 :(得分:0)

是的,您可以将红黑树表示为数组,但这是不值得的。

红黑树的最大高度为2 * log2(n + 1),其中n为条目数。每个级别的数组表示形式中的条目数为2 ** n,其中n为级别。因此,要存储1_000个条目,您必须分配1_048_576个条目的数组。要存储1_000_000个条目,您必须分配1_099_511_627_776个条目的数组。

这不值得。