數據結構 - 字典樹

字典樹 Trie

Trie 讀 Tree 或者 Try 來自 reTrieval
又稱前綴樹(prefix tree), 能被用來快速搜索字符串 比如查英文字典時,我們是按照單詞各個字母的順序挨個查找 - words 我們會按照順序 w -> o -> r -> d -> s.

在計算機中我們可以使用樹型結構來對單詞進行存儲以便於在查找的時候方便。

在這裏插入圖片描述
上圖是在一個Trie中插入單詞 {"APP", "APPLE", "B", "BI", "CA"} 得出的結構. 從上圖可以看出,我們有以下所有prefix的組合 {"A", "B", "C", "AP", "APP", "APPL", "APPLE", "BI", "CA"}. 但是在字典裏面APP 和 APPLE 是兩個不一樣的單詞,但是他們都存在這個prefix tree中,這時可以使用 特殊節點來作爲一個單詞的結束節點 - 如上圖當我們結束插入 APP 的時候我們給 最後一個P的插入一個特殊的孩子節點. 或者我們給TrieNode多加一個變量讓其中單詞結束那個node存儲該單詞的字符串。例如APP, 第二個P節點存儲APP;APPLE的E節點存儲APPLE 這樣我們就能區分開這是個prefix還是整個單詞.

總結一些性質:

  1. 根節點爲空
  2. 每個節點僅存儲它的孩子
  3. 從根到節點A,所有字符組成的字符串稱爲A節點的內容

一些資料
https://www.interviewcake.com/concept/java/trie

https://www.baeldung.com/trie-java

代碼實現

<有問題請指出,我真錯了,我改>
<還想知道什麼內容,告訴我,我加>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章