【发布时间】:2021-01-22 05:50:30
【问题描述】:
红黑树是维护有序集合的有效数据结构。但是,我看到的所有实现(例如 c++ STL 或“算法简介”一书)似乎都为每个节点存储了一个父指针。这会导致更大的内存消耗。
我认为可以删除这样的父指针。除了内存问题,我们不需要管理每个节点的父指针。然后每个节点只存储左子指针、右子指针、键和颜色。没有父指针,插入和删除仍然可以使用额外的堆栈来实现。
对于给定的键 $x$,我们首先从根开始并找到 $x$。通过这个过程,我们使用堆栈来记录路径上的所有节点。之后,如果我们需要旋转某个节点,可以使用堆栈查找父亲信息。它仍然很有效,每次操作的时间复杂度仍然是 O(log n)。
所以我不知道为什么当前的实现都在每个节点中存储父指针。
【问题讨论】:
标签: binary-search-tree red-black-tree