我目前在bit trie中存儲了大量的無符號32位整數(有效地爲32位值中的每個位形成一個帶有節點的二叉樹)。這對快速查找精確值非常有效。是否有可能有效地搜索bit-trie的值小於密鑰?
我現在希望能夠搜索可能存在或不存在於密鑰樹中的密鑰,並找到小於或等於搜索密鑰的第一個密鑰的值。 這是有效的可能與位特里,或者我應該使用不同的數據結構?
由於速度和緩存局部性,我正在使用trie,並且最好也不想犧牲。
例如,假定該線索有兩個密鑰加入:
0x00AABBCC
0x00AABB00
和我的現在檢索的密鑰不存在,0x00AABB11
。我想找到樹中第一個鍵值爲< =搜索鍵,在這種情況下,它將是0x00AABB00
的節點。
雖然我已經想到了一個可能的算法如此,我尋求如果是有效的具體信息可能和/或是否有已知算法這一點,這無疑會比我好擁有。
似乎一般情況下會涉及一些回溯。在最壞的情況下,回溯可能非常昂貴,不是嗎? –
@JimMischel這就是我所擔心的。是否有更好的具有相似屬性的數據結構(對<=,良好緩存局部性,快速搜索) –