【发布时间】:2012-07-13 15:13:26
【问题描述】:
我刚刚从“Learn You a Haskell”一书中读到了二叉搜索树,我想知道使用这棵树搜索多个元素是否有效?例如,假设我有一堆对象,其中每个对象都有一些索引,并且
5
/ \
3 7
/ \ / \
1 4 6 8
如果我需要通过索引 8 查找元素,我只需要执行三个步骤5 -> 7 -> 8,而不是遍历整个列表直到结束。但是如果我需要找到多个对象,比如 1、4、6、8,该怎么办?看来我需要对每个元素 5-> 3 -> 1 5 -> 3 -> 4、5 -> 7 -> 6 和 5 -> 7 -> 8 重复相同的操作。
所以我的问题是:使用二叉搜索树查找多个元素是否仍然有意义?是否比检查每个元素的条件更好(在最坏的情况下只会导致 O(n))?
另外,如果我需要检查多个属性,使用哪种数据结构更好。例如。在上面的示例中,我只查找id 属性,但如果我还需要通过name 或color 等进行搜索呢?
【问题讨论】: