字典樹 TrieTree 講解與實現

2022-09-08 12:06:12 字數 1542 閱讀 4443

字典樹,又稱單詞查詢樹,

trie樹

,是一種

樹形結構

,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串(但不僅限於字串),所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是:利用字串的公共字首來節約

儲存空間

,最大限度地減少無謂的字串比較,查詢效率比

雜湊表高。

字典樹與字典很相似,當你要查乙個單詞是不是在字典樹中,首先看單詞的第乙個字母是不是在字典的第一層,如果不在,說明字典樹里沒有該單詞,如果在就在該字母的孩子節點裡找是不是有單詞的第二個字母,沒有說明沒有該單詞,有的話用同樣的方法繼續查詢.字典樹不僅可以用來儲存字母,也可以儲存數字等其它資料。

trienode結構定義:

const int max = 26;

typedef struct trienode

;

tiretree結構定義:

class trietree

;

tiretree實現:

trie的查詢(最主要的操作):

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

(4) 迭代過程……   

void trietree::inittrietree()

trienode *trietree::createnode()

int trietree::insert(const char* word)

word++;

if(!*word)

p->branchs[k]->isword = true;

p = p->branchs[k];

} // delete p;

return 1;

}int trietree::search(const char* word)

return 0;

}

測試**:

int main(int argc, char const *ar**)

{ trietree t;

t.insert("ac");

t.insert("abacus");

t.insert("abalone");

t.insert("abandon");

t.insert("abandoned");

t.insert("abashed");

t.insert("abate");

t.insert("this");

if (t.search("ac"))

cout<

'ac' was found. pos:

'this' was found. pos:

'baby' does not exist at all!

Trie樹(字典樹)講解

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

Tree字典樹講解

就像樹根一樣,每個點就是節點,也像乙個網狀鍊錶。優點 對於字串可以減少無所謂的比較,效率很高。多說無益,上例題 ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第...

字典樹(講解 模版)

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