一、定義及使用場景
又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串(但不僅限於字串),所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是:利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比雜湊樹高
特點:
1、根節點不包含字元,除根節點意外每個節點只包含乙個字元。
2、從根節點到某乙個節點,路徑上經過的字元連線起來,為該節點對應的字串。
3、每個節點的所有子節點包含的字串不相同。
4、每個節點最多有26個孩子節點(儲存26個字母)
變種:bit-wise trie,用bit位儲存26個字母
#include #include #include typedef struct tnodetree;
tree *createtree()
root->iscomplete = 0;
}return root;
}int searchtree(char *str, tree *root)
if (found->iscomplete == 1)
return 1;
else
return 0;
}int insert(char *str, tree *root)
p = p->child[value];
}p->iscomplete = 1;
return 1;
}int main()
(1) 字串檢索事先將已知的一些字串(字典)的有關資訊儲存到trie樹里,查詢另外一些未知字串是否出現過或者出現頻率。
(2)文字**、自動完成,see also,拼寫檢查
(3)詞頻統計
(4)排序
trie樹是一棵多叉樹,只要先序遍歷整棵樹,輸出相應的字串便是按字典序排序的結果。
(5)字串最長公共字首
trie樹利用多個字串的公共字首來節省儲存空間,當我們把大量字串儲存到一棵trie樹上時,我們可以快速得到某些字串的公共字首。
(6)字串搜尋的字首匹配
trie樹常用於搜尋提示。如當輸入乙個**,可以自動搜尋出可能的選擇。當沒有完全匹配的搜尋結果,可以返回字首最相似的可能。
(7)作為其他資料結構和演算法的輔助結構
如字尾樹,ac自動機等
字尾樹可以用於全文搜尋
參考:參考:
參考:
資料結構 TRIE樹
分類 data structure 2009 04 19 22 31 5425人閱讀收藏 舉報trie樹 trie樹就是字元樹,其核心思想就是空間換時間。舉個簡單的例子。給你100000個長度不超過10的單詞。對於每乙個單詞,我們要判斷他出沒出現過,如果出現了,第一次出現第幾個位置。這題當然可以用h...
資料結構 TRIE樹
trie樹 trie樹就是字元樹,其核心思想就是空間換時間。舉個簡單的例子。給你100000個長度不超過10的單詞。對於每乙個單詞,我們要判斷他出沒出現過,如果出現了,第一次出現第幾個位置。這題當然可以用hash來,但是我要介紹的是trie樹。在某些方面它的用途更大。比如說對於某乙個單詞,我要詢問它...
資料結構之Trie樹
1 什麼是trie樹 trie樹,即字典樹,又稱單詞查詢樹或鍵樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計和排序大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 最大限度地減少無謂的字串比較,查詢效率比雜湊表高。trie的核心思想是空間換時間。利用字串的公...