Trie / Radix Tree / Suffix Tree


Trie (字典樹)

"A", "to", "tea", "ted", "ten", "i", "in", "inn" 這些單詞組成的字典樹.

 

Radix Tree (基數樹)

基數樹與字典樹的區別在於基數樹將單詞壓縮了, 節點變得更少

 

Suffix Tree (后綴樹)

單詞 "BANANA" 的后綴樹. 每個后綴以 $ 結尾. 所有的后綴為 A$NA$ANA$,NANA$ANANA$ and BANANA$. 葉子節點表示后綴的起始坐標. 世界上后綴樹就是一個單詞的所有后綴組成的字典樹, 並且把字典樹單詞進行了壓縮

 

實際應用

在我們的消息隊列中, 需要根據消息的 subject 查找所有訂閱了該 subject 的 group, consumer 訂閱 subject 方式是通過訂閱 subject 的前綴, 例如 subject 為 flight.book.pay 可以通過訂閱前綴 flight.book 來接收消息. 在我們的應用中, 使用 concurrent-tree 的 ConcurrentInvertedRadixTree 來存儲 prefix => Map<String, Group>. 也就是 前綴 => Map<Group name, Group>.

在查詢的時候, 通過 tree.getKeysPrefixing(subject) 來查找訂閱了 subject 的 group


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM