我已经能够通过几个来源找到几个自平衡BST的细节,但是我没有找到任何好的描述,详细说明哪一个最适合在不同的情况下使用(或者如果真的无关紧要)。

我想要一个最适合存储超过一千万个节点的BST 节点的插入顺序基本上是随机的,我永远不需要删除节点,因此插入时间是唯一需要优化的东西。

我打算用它来存储益智游戏中先前访问过的游戏状态,以便我可以快速检查是否已经遇到过以前的配置。

===============>>#1 票数:4 已采纳

对于插入较重的应用, 红黑比AVL更好。 如果你预见相对统一的查找,那么红黑就是你要走的路。 如果您预见到相对不平衡的查找,最近查看的元素更有可能再次被查看,您希望使用splay树

===============>>#2 票数:3

为什么要使用BST 从您的描述中,如果不是更好的话,字典也会起作用。

使用BST的唯一原因是,如果您想按密钥顺序列出容器的内容。 这肯定听起来不像你想要这样做,在这种情况下去哈希表。 O(1)插入和搜索,不用担心删除,有什么可能更好?

===============>>#3 票数:0

我最熟悉的两个自平衡BST是红黑和AVL ,所以我不能肯定是否有其他解决方案更好,但我记得,红黑有更快的插入和更慢的检索比较到AVL

因此,如果插入的优先级高于检索,则红黑可能是更好的解决方案。

===============>>#4 票数:-2

[哈希表] O(1)插入和搜索

我认为这是错误的。

首先,如果将键空间限制为有限,则可以将元素存储在数组中并执行O(1)线性扫描。 或者您可以对阵列进行混合,然后在O(1)预期时间内进行线性扫描。 当东西是有限的,东西很容易O(1)。

所以假设您的哈希表将存储任意位字符串; 只要有一组无限的键,每一个都是有限的,它就没那么重要了。 然后你必须读取任何查询和插入输入的所有位,否则我在y1中插入y0并在y1上查询,其中y0和y1在你不看的单个位位置处不同。

但是,让我们说密钥长度不是一个参数。 如果您的插入和搜索需要O(1),在特定的哈希花费O(1)时间,这意味着你只能看着从散列函数(从中有可能只是一个有限输出的有限数量的输出,授)。

这意味着对于有限数量的桶,必须有一组无限的字符串,它们都具有相同的散列值。 假设我插入了很多,即ω(1),并开始查询。 这意味着您的哈希表必须依赖于其他一些O(1)插入/搜索机制来回答我的查询。 哪一个,为什么不直接使用它?

  ask by Jonesinator translate from so

未解决问题?本站智能推荐: