例如,我知道 2-3 树和红黑树的概念和思想,但你能告诉我其中一种比另一种更好的情况吗?我应该问自己什么问题?
由于问题不只是关于 2-3 树和红黑树,请随意举出其他自平衡树的示例,我将研究它们。只是想从一般的角度提出这个问题,以便于谷歌搜索其他想知道类似或相同问题的人。
例如,我知道 2-3 树和红黑树的概念和思想,但你能告诉我其中一种比另一种更好的情况吗?我应该问自己什么问题?
由于问题不只是关于 2-3 树和红黑树,请随意举出其他自平衡树的示例,我将研究它们。只是想从一般的角度提出这个问题,以便于谷歌搜索其他想知道类似或相同问题的人。
主要考虑因素是插入/擦除的数量与查找的数量。通常选择归结为红黑或 AVL。
AVL 以更复杂的平衡操作为代价保持更严格的平衡。AVL 还需要每个节点更多的信息,但通常可以实现 RB 和 AVL,以便所需的信息隐藏在已经存在的成员中(即在对齐地址分配的缓冲区的低位中)。
请注意,如果您的树不会很大,那么您选择哪种树可能并不重要(甚至根本没有树,如果您只有十几个项目,则列表甚至数组可能都可以)。如果你的树不会有数万棵,那么即使非常粗略的平衡也可能“足够好”。
如果您要在某个较大的节点中处理具有多个值的树(如在 2-3 树中,则使用完整的 b-tree 并使用更大的因子可能更有意义。我只有在通往更有用结构的教学过程中曾经遇到过 2-3 和 2-3-4 树。