tire樹的基本原理:
tire樹是一種樹形結構,因其是詞典的一種儲存方式,故又叫字典樹。
詞典中的每乙個單
詞在tire樹中表現為一條從根結點出發的路徑,路徑邊
上的點連起來就是一顆tire樹,如右圖:
tire樹的基本性質可以歸納為:
(1)根結點不包含字元,其他的每乙個節點只包含乙個字元;
(2)從根結點到某一節點,路徑上經過的字元連線起來,為該節點對應的字串;
(3)每個節點的所有子節點包含的字元都不相同。
典型的應用是用於統計和排序大量的字串(但不僅限於字串),所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是:最大限度的減少無謂的字串比較,查詢效率要高於雜湊表。
tire樹核心是空間換時間,利用字串的公共字首來降低查詢的時間開銷,從而達到提高效率的目的。對於龐大的空間消耗,我們可以用鍊錶來動態開闢空間,達到空間上利用率的最大化。
tire樹的基本操作:
tire樹的操作有:插入,查詢和刪除,刪除操作不常用,下面我們主要看一下插入和查詢操作:
#include #include #include using namespace std;
#define son_num 30 //字串中包含的字元個數
#define maxn 10 //單詞的最大長度
struct tire
;tire *root;
tire *init() //建立新節點
void insert(tire *root,char str) //插入操作
p->terminal=true;
}bool find(tire *p,char str) //查詢操作
if(str[i]=='\0'&&p->terminal) return true; //查詢字串本身
//if(str[i]=='\0') return true; 查詢字首
return false;
}void del(tire *root) //清空操作
int main()
for(int i=0;i>str;
if(find(root,str)) puts("yes");
else puts("no");
}del(root); //釋放字典樹占用的空間
return 0;
}
Tire樹(字典樹)
trie樹,即字典樹,又稱單詞查詢樹或鍵樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計和排序大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 最大限度地減少無謂的字串比較,查詢效率比雜湊表高。trie的核心思想是空間換時間。利用字串的公共字首來降低查詢時間的...
海量資料處理之Tire樹(字典樹)
原文 trie樹,即字典樹,又稱單詞查詢樹或鍵樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計和排序大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 最大限度地減少無謂的字串比較,查詢效率比雜湊表高。trie的核心思想是空間換時間。利用字串的公共字首來降低查詢...
海量資料處理之Tire樹(字典樹)
trie樹,即字典樹,又稱單詞查詢樹或鍵樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計和排序大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 最大限度地減少無謂的字串比較,查詢效率比雜湊表高。trie的核心思想是空間換時間。利用字串的公共字首來降低查詢時間的...