Tire樹(字典樹)的基本操作

2021-07-02 03:27:44 字數 1300 閱讀 9777

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的核心思想是空間換時間。利用字串的公共字首來降低查詢時間的...