「LearnYouaHaskell」の本から二分探索木について読んだばかりですが、この木を使用して複数の要素を検索することが効果的かどうか疑問に思っています。たとえば、すべてのオブジェクトにインデックスが付いているオブジェクトがたくさんあるとします。
5
/ \
3 7
/ \ / \
1 4 6 8
インデックス8で要素を見つける必要がある場合は、5 -> 7 -> 8
リスト全体を最後まで繰り返すのではなく、3つの手順を実行するだけで済みます。しかし、1、4、6、8など、いくつかのオブジェクトを見つける必要がある場合はどうなりますか?要素ごとに同じアクションを繰り返す必要があるようです5-> 3 -> 1
5 -> 3 -> 4
、、。5 -> 7 -> 6
5 -> 7 -> 8
だから私の質問は:複数の要素を見つけるために二分探索木を使用することはまだ意味がありますか?各要素の状態をチェックするよりも良いでしょうか(最悪の場合、O(n)のみになります)。
また、複数の属性をチェックする必要がある場合は、どのようなデータ構造を使用するのが適していますか。たとえば、上記の例では、id
属性のみを検索していましたが、、、などで検索する必要がある場合はどうname
なりcolor
ますか?