演算法學習 字典樹

2021-09-27 08:10:11 字數 1477 閱讀 2905

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

性質

根節點不包含字元,除根節點外每乙個節點都只包含乙個字元;

從根節點到某一節點,路徑上經過的字元連線起來,為該節點對應的字串;

每個節點的所有子節點包含的字元都不相同。

搜尋字典專案的方法為

(1) 從根結點開始一次搜尋;

(4) 迭代過程……

(1) 字串檢索

事先將已知的一些字串(字典)的有關資訊儲存到trie樹里,查詢另外一些未知字串是否出現過或者出現頻率。

舉例:1,給出n 個單詞組成的熟詞表,以及一篇全用小寫英文書寫的文章,請你按最早出現的順序寫出所有不在熟詞表中的生詞。

2,給出乙個詞典,其中的單詞為不良單詞。單詞均為小寫字母。再給出一段文字,文字的每一行也由小寫字母構成。判斷文字中是否含有任何不良單詞。例如,若rob是不良單詞,那麼文字problem含有不良單詞。

3,1000萬字串,其中有些是重複的,需要把重複的全部去掉,保留沒有重複的字串。

(2)字串搜尋的字首匹配

trie樹常用於搜尋提示。如當輸入乙個**,可以自動搜尋出可能的選擇。當沒有完全匹配的搜尋結果,可以返回字首最相似的可能。

trie樹檢索的時間複雜度可以做到n,n是要檢索單詞的長度,

如果使用暴力檢索,需要指數級o(n2)的時間複雜度。

例題:1、實現字典樹

2、查詢字典樹

package trie;

class trienode

public boolean containskey(char ch)

public trienode get(char ch)

public void put(char ch, trienode node)

public void setend()

public boolean isend()

}class trie

// inserts a word into the trie.

public void insert(string word)

node = node.get(currentchar);

}node.setend();

}private trienode searchprefix(string word) else

}return node;

}// returns if the word is in the trie.

public boolean search(string word)

}

演算法學習筆記 Trie 樹(字典樹)

2.3 trie 樹的適用範圍 3.總結 trie 樹,中文名為字典樹,是一種字串的高效處理演算法。trie 樹實現的功能就是快速的查詢一堆字串裡面有沒有某個串是另乙個串的字首,字尾等等。trie 樹首先是一棵樹,比如下面這棵樹就是一棵 trie 樹。這棵樹是由ab,abd,ac,bd四個字串構成的...

OC學習 字典

1.概念 字典是關鍵字key及其定義的值value所構成的集合.即它是由key value組成的鍵值隊的集合.通常來講,key一般是nsstring型別,value是oc中任意的物件.對於字典來講,我們就是通過key來訪問value.2.為什麼在有了陣列後,還需要有字典呢?在有大量的資料或頻繁的查詢...

python學習 字典

字典的形式 形式 dict key 鍵 可以理解為代號 value 值 代號所指代的內容 字典的特點 1 字典是 無序 的,它不能通過偏移來訪問,只能 通過鍵來訪問 2 可以巢狀 3 可變資料型別,可以在原地修改裡面的內容。4 組成字典的 鍵 必須是 不可變 的資料型別,比如,數字,字串,元組等 列...