參考部落格
字典樹是一種用於統計字串、文字詞頻統計的入門級的資料結構。
基本性質
(1)根節點不包括字元,除根節點外每乙個節點都只包含乙個字元。
(2)用邊表示字母
(3)從根節點到某一節點,路徑上經過的字元連起來,為該節點對應的字串。
(4)每個節點的所有子節點包含的字元都不相同,每個節點最多有26個子節點(在單詞只包含小寫字母的情況下)
(5)有相同字首的單詞公用字首節點。
(6)整棵樹的根節點是空的,便於插入和查詢。
(7)每個單詞結束時用乙個特殊字元表示,那麼從根節點到任意乙個特殊字元,所經過的邊的所有字母表示乙個單詞。
基本操作
插入:從左到右掃瞄這個單詞,如果字母在相應的根節點下沒有出現過,就插入這個字母。
我們設trie(i)(j)=k,表示編號為i的節點的第j個孩子為編號為k的節點。
可以寫出插入的**:
void insert (strings) }
查詢:可以查詢某個字首,也可以查詢整個單詞。
bool find (strings)
return
true
;}
還可以用trie樹給字串排序,將每個字串依次插入到trie樹中,做先序遍歷,可以得到字串從小到大的順序,消耗空間較大,但時間複雜度可以降至o(n)。
學習筆記 字典樹
字典樹又稱單詞查詢樹,其利用了字串的公共字首來減少查詢時間,查詢效率比較高。然後如下圖建樹 有點醜,莫介意 每個父親節點都有26個 假設只需要查詢a z 兒子,從a z,樹建好了。然後我們定義乙個陣列tree i j 陣列的i為第i個節點,j為第j個兒子.第幾個節點怎麼看呢?比如上圖我們要插入字串a...
學習筆記 關於字典樹
字典樹是一種特殊的樹,以下函式是特別儲存的留作以後備用的函式。也是以結點的形式來構建樹,結構體如下 typedef struct node tree,tr 建立字典樹的函式,返回值是樹根的位址,由此字串時鍵鼠並標記為1。tr build tr t,char s,int p t pi for i 0 ...
學習筆記 字典樹(Trie)
日期 2020 08 25 目錄三 碎碎念 字典樹,英文名 trie。顧名思義,就是乙個像字典一樣的樹。可能有些不太形象,那我們舉個栗子叭 比如有乙個 duliu dalao daunting 令人望而生畏的 zhltao 那麼我們可以這麼存 仔細看看的話,其實挺像查字典的 我翻開一本如上的字典,翻...