如何解决为什么我们需要为红黑树中的每个节点存储一个父指针?
红黑树是一种有效的数据结构,用于维护有序集。但是,我看到的所有实现(例如c ++ STL或《算法简介》)似乎都为每个节点存储了一个父指针。这将导致更大的内存成本。
我认为可以删除此类父亲指针。除了内存问题外,我们不需要管理每个节点的父指针。然后,每个节点仅存储左子指针,右子指针,键和颜色。没有父指针,仍然可以使用额外的堆栈来实现插入和删除。
对于给定的键$ x $,我们首先从根开始查找$ x $。通过此过程,我们使用堆栈来记录路径上的所有节点。此后,如果需要旋转某个节点,则可以使用堆栈查找父信息。它仍然有效,并且每次操作的时间复杂度仍为O(log n)。
所以我不知道为什么当前的实现都将父指针存储在每个节点中。
解决方法
具有父指针使某些操作很多更容易实现,最值得注意的是从树的给定元素移至下一项或上一项。如果每个节点都有父指针,则可以简单地实现这些操作,而不必每次都定位从根到当前项的路径。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。