用于后继查找的最佳二叉搜索树?

时间:2011-12-28 23:38:25

标签: algorithm data-structures tree binary-search-tree

在给定一组密钥以及选择这些密钥的相关概率的情况下,有许多算法可用于查找optimal binary search trees。以这种方式生成的二叉搜索树将具有查找这些元素的最低预期时间。但是,对于其他度量,此二叉搜索树可能不是最佳的。例如,如果您尝试查找未包含在树中的键,则查找时间可能非常大,因为树可能不平衡以优化某些元素的查找。

我目前有兴趣了解如何从一组密钥构建二进制搜索树,其目标是最小化查找某个特定值的后继所需的时间。也就是说,我希望以某种方式构造树,在给定一些随机密钥k的情况下,我可以尽可能有效地找到k的后继。我碰巧事先知道给定随机密钥落在构造树的任何两个密钥之间的概率。

有谁知道这个问题的算法?或者我错误地认为构建最优二叉搜索树的标准算法不能为这个用例生成有效的树?

1 个答案:

答案 0 :(得分:1)

所以现在我觉得很傻,因为这个问题很简单。 : - )

您使用标准的现成算法构建最佳二叉搜索树,以便为该组密钥构建二叉搜索树。然后,您可以注释每个节点,以便它存储其键和键之前的整个范围。这意味着您可以通过在最佳构建的树上执行标准搜索来有效地找到后继者。如果在任何时候发现您要查找的密钥包含在某个节点中的某个范围内,那么您就完成了。换句话说,找到后继者只相当于在BST中搜索值。