Trie樹(字典樹)整理

2022-04-12 02:02:23 字數 1033 閱讀 1476

字典樹 (trie)

用於儲存字串。樹的每條邊恰好表示乙個字元,每個節點代表從根到該節點的路徑所對應的字串。

簡介與操作實現可見藍書p82~83。

trie字典樹很好地利用了字首,節省了很多空間。

1

//先說明一下:本**段的字串d的下標都是從1開始

2 inline void insert(char *d)//

向trie樹插入字串d

312 ed[now]=1;//

最後標明一下字串結尾節點,說明該節點代表了乙個已插入過的字串 13}

1415 inline int fin(char *d)從trie樹查詢字串d

1625

return ed[now];//

查詢到最後還要看當前節點是否代表乙個插入過tire樹的字串

26 }

操作實現的核心**

應用:1、字首查詢。

在trie樹中查詢乙個字串的字首。不管trie樹中插入了多少個字串,查詢的複雜度都是優秀的o(n)(n為當前字串的長度)。

還有一種邊插邊找字首的方法。如果當前串插入trie樹時沒有新建任何節點,那它就是它的末尾節點的子樹中所有串的字首;如果當前串插入trie樹時經過了某個串x的末尾節點,那麼x就是當前串的乙個字首。

2、異或相關。

將每個數看做二進位制的01串。從trie樹中找當前數字異或值最大的數,只要盡可能向與當前邊反方向的邊走就好。

1 inline int fin(int a)//

從trie樹中找與a異或的結果最大的數,並返回這個結果2//

a為int範圍的乙個正整數 316

else

//沒有的話,有哪條邊,就走那條邊嘍。

17//

trie樹中至少有乙個數的話,一定能一直走下去

18 now=tree[now][c^1

];19}20

return

ret;

21 }

相關**

Trie字典樹 模板整理

首先附上學習字典樹參考的部落格鏈結 字典樹,又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字元 串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比雜湊...

Trie樹(字典樹)

trie樹的核心思想是用空間換時間,通過在樹中儲存字串的公共字首,來達到加速檢索的目的。例如,對於一棵儲存由英文本母組成的字串的trie樹,如下圖 trie樹在實現的時候,可以用左兒子右兄弟的表示方法,也可以在每個節點處開設乙個陣列,如上圖的方法。trie樹的主要操作是插入 查詢,也可以進行刪除。插...

字典樹 Trie樹

字典樹 trie樹 顧名思義是一種樹形結構,屬於雜湊樹的一種。應用於統計 排序 查詢單詞 統計單詞出現的頻率等。它的優點是 利用字串的公共字首來節約儲存空間,最大限度地減少無謂的字串比較,查詢效率比雜湊表高。字典樹的結構特點 根節點不代表任何字元。其他節點從當前節點回溯到根節點可以得到它代表的字串。...