【數(shù)據(jù)結(jié)構(gòu)之字典樹Trie】C語言實現(xiàn)



/**
?* 字典樹
?*? 1、根節(jié)點(Root)不包含字符,除根節(jié)點外的每一個節(jié)點都僅包含一個字符;
?*? 2、從根節(jié)點到某一節(jié)點路徑上所經(jīng)過的字符連接起來,即為該節(jié)點對應(yīng)的字符串;
?*? 3、任意節(jié)點的所有子節(jié)點所包含的字符都不相同;
?*? 4、關(guān)鍵詞的插入和查找過程的時間復(fù)雜度均為 O(key_length),
?*? 5、空間復(fù)雜度 O(ALPHABET_SIZE * key_length * N) ,其中 N 是關(guān)鍵詞的數(shù)量。
**/
????Trie又稱單詞查找樹,是一種樹形結(jié)構(gòu),是哈希樹的變種。典型應(yīng)用是用于統(tǒng)計,排序和保存大量的字符串(但不僅限于字符串),所以經(jīng)常被搜索引擎系統(tǒng)用于文本詞頻統(tǒng)計。
????優(yōu)點:非常適合操作字符串,利用字符串的公共前綴來減少查詢時間,最大限度地減少無謂的字符串比較,查詢效率比哈希樹高。
????缺點:雖然不同單詞共享前綴,但其實trie是一個以空間換時間的算法,每個結(jié)點只存儲一個字符浪費(fèi)了
標(biāo)簽: