我刚刚从“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
等搜索呢?