Tag: 红黑树

在avl树的红色黑树

AVL和红黑树都是自平衡的,除了红色和黑色的节点。 select红黑树而不是AVL树的主要原因是什么? 红黑树有什么用途?

什么额外的轮换是需要从自上而下删除2-3-4左红黑树?

我一直在实现一个LLRB包,应该能够以Sedgewick ( 代码改进的代码) 描述的自下而上2-3或自上而下2-3-4两种模式中的任何一种模式进行操作,尽pipe只处理2- 3棵树在这里 ,感谢RS指针)。 Sedgewick为2-3模式提供了一个非常清晰的树操作描述,尽pipe他花费了大量的时间来讨论2-3-4模式。 他还展示了如何简单地改变插入过程中的颜色翻转顺序,可以改变树的行为(或者在2-3-4的路上分割,或者在2-3的path上分割): private Node insert(Node h, Key key, Value value) { if (h == null) return new Node(key, value); // Include this for 2-3-4 trees if (isRed(h.left) && isRed(h.right)) colorFlip(h); int cmp = key.compareTo(h.key); if (cmp == 0) h.val = value; else if (cmp < 0) h.left = insert(h.left, […]

红黑树

我已经看到了最近几本书中提到的二叉树和二进制search,但由于我还在计算机科学的学习之初,我还没有select一门真正处理algorithm和数据的课程结构严重。 我已经检查了典型的资料来源(维基百科,谷歌),大部分描述了红黑树(特别是红黑树)的用途和实施,已经变得密集而难以理解。 我确信有必要的背景的人,这是完全合理的,但目前它几乎像一门外语。 那么是什么让二叉树在编程时发现自己在做的一些常见任务中有用呢? 除此之外,你更喜欢使用哪些树(请包括一个示例实现),为什么?

红黑树和AVL树之间的区别

有人可以解释这两个数据结构之间的主要区别是什么? 我一直在试图find一个在线来源,突出差异/相似之处,但我还没有发现任何太多的信息。 在什么情况下会比另一个更受欢迎? 什么样的实际情况让一个人比另一个“更好”使用?

纯function地图和集合的统计performance

给定一个数据结构规范,如具有已知复杂性界限的纯函数映射,必须在几个实现之间进行select。 有一些关于如何挑选合适的民间传说,例如红黑树通常被认为是更快的,但AVL树在工作量方面有更好的performance,并且有很多的查找。 是否有这种知识的系统介绍(出版论文)(与集合/地图有关)? 理想情况下,我希望看到在实际软件上进行统计分析。 例如,可以得出结论:有N种典型的地图使用情况,并列出每种地图的input概率分布。 是否有系统的基准testing图,并设置不同分布的input性能? 是否有实现使用自适应algorithm来改变表示取决于实际使用情况?

何时selectRB树,B-Tree或AVL树?

作为程序员,我应该什么时候考虑使用RB树,B-树或AVL树? 在决定select之前,需要考虑哪些关键点? 有人可以解释一下每个树形结构的场景,为什么它是参照关键点select的?