【发布时间】:2017-07-24 23:19:06
【问题描述】:
是否值得将红黑树表示为数组以消除内存开销。或者数组会占用更多内存,因为数组会有空槽?
【问题讨论】:
-
首先,您将如何在数组中表示 RBT?编辑您的问题以添加此详细信息!
-
我将使用 c 进行编码。打开 -O3。
-
我的问题是:你将如何使用数组?您将如何表示数组中的红色和黑色节点,以及如何维护 5 个属性等?回答这些问题。然后我们可以给你一个答案。
-
红黑树的开销并不比任何其他数据结构多。与大数据集的数据检索的好处相比,添加到树的旋转是最小的。如果使用(结构)数组来替换树,则会丢失树在遍历时提供的所有关系排序。您可以将数据存储在您选择的任何数据结构中,具体取决于您将如何使用数据以及您的性能要求。
-
我猜@jsho 将使用一个数组,因为它用于二进制堆:根值在数组中具有索引 1,对于具有索引
N的值左子具有索引N*2,右孩子有索引N*2 + 1,父母有索引N div 2。对于红黑树,您将需要两个数组,一个用于值,一个用于颜色。如果您对颜色使用一些设置,则可以节省一些内存。
标签: c arrays data-structures red-black-tree