在选择自平衡 BST 的类型时要考虑什么样的决定?

What kind of decisions to consider while choosing the type of a self-balanced BST?

比如我知道2-3树和红黑树的概念和思想,但是你能给我一些其中一个比另一个更好的情况吗?我应该问自己什么问题?

由于问题不仅仅是关于 2-3 树和红黑树,请随意举出其他自平衡树的例子,我会研究它们。只是想从一般的角度提出这个问题,以便于谷歌搜索其他想知道类似或相同问题的人。

主要考虑的是 inserts/erases 的数量与查找的数量。通常选择归结为 red-black 或 AVL。

AVL 以更复杂的平衡操作为代价保持更严格的平衡。 AVL 还需要每个节点多一点信息,但通常可以实现 RB 和 AVL,以便将所需信息隐藏在已经存在的成员中(即在对齐地址分配的缓冲区的低位中)。

请注意,如果您的树不会很大,那么您选择什么树可能并不重要(甚至根本不选择一棵树,如果您只有一打,则列表甚至数组都可能没问题项目)。如果你的树不会达到数万,即使非常粗略的平衡也可能是 'good enough'.

如果您打算在某个较大的节点中使用具有多个值的树(如在 2-3 树中一样,使用完整的 b-tree 并使用 much 可能更有意义更大的因素。在通往更有用结构的教学过程中,我只遇到过 2-3 和 2-3-4 棵树。