Trie樹(字典樹)的C 實現

2022-04-03 23:31:09 字數 1333 閱讀 1741

trie樹,又稱字典樹、單詞查詢樹、字首樹,是一種雜湊樹的變種,應用於字串的統計與排序,經常被搜尋引擎系統用於文字詞頻統計。優點是查詢快,利用字串的公共字首來節省儲存空間,最大限度的減少無謂的字串比較。對於長度為m的鍵值,最壞情況下只需花費o(m)的時間;而bst需要o(mlogn)的時間。

leetcode 208.實現trie(字首樹)

//定義結點型別

struct trienode; //該陣列記錄指向各孩子的指標

trienode(){}

~trienode() }

};//定義trie樹型別

class trie

~trie()

//先定義三個功能函式

//插入單詞

void insert(const string& word)

t = t->next[idx];

}t->terminalsize += 1; //更新這個單詞的數量

return;

}//查詢單詞

bool search(const string& word)

if(t->terminalsize > 0) return true;

else return false;

}//查詢字首,同查詢單詞,區別是不需要判斷t->terminalsize是否大於0

bool startswith(const string& prefix)

return true;

}};

leetcode 820.單詞的壓縮編碼

//定義trie樹的結點型別

struct trienode; //該陣列記錄指向各孩子的指標

trienode(){}

~trienode() }

};//定義trie樹

class trie

~trie()

//插入乙個單詞,若該單詞是trie樹中某個單詞的字首,則返回false

bool insert(const string& word)

t = t->next[c-'a']; //更新t結點

}return success;

}};class solution ;

sort(words.begin(), words.end(), cmp);

//將各個單詞分別插入trie樹,若插入成功,則累加長度

trie tree;

int res = 0;

for(string& word : words)

return res;

}};

注意:

Trie樹(字典樹)的實現

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

trie樹 字典樹 java實現

public class trie public void insert string word else current.count current.isend true 怎麼判斷單詞是否存在?被判斷的單詞的字母與根節點下的子節點的字母進行比較,直到匹配到兩者最後乙個字母相同,並且最後乙個節點的i...

Trie樹(字典樹)

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