Trie樹(字典樹)講解

2021-09-24 22:14:45 字數 2482 閱讀 2612

先聊一聊字典樹是什麼,他有什麼用

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

簡單來說,字典樹就是將很多組字串儲存在一棵樹上,並且可以快速的找到單詞。

下面先構建一棵簡單的字典樹:

如給出以下字串「ab」,「bc」,「acd」,「bca」,「cab」,「caccd」,「cacca」,構建一棵trie樹。

建樹如下圖

圖中紅色的節點表示到此處已經構成乙個單詞了

字典樹通過每個字母向下查詢,能減少時間

在字典樹上,每一條邊對應乙個字母,而每個節點表示的是這個節點的字首,比如最左邊的b連線的那個節點代表的字首是,因為與享有共同的字首,所以他們享有共同的分支。

陣列寫法:

一、建樹

void

insert()

head=trie[head]

[x];

}}

二、查詢

bool find()

return

true

;}

三、查詢字首數量查詢字首數量需要把前兩個**塊修改一下,具體在下面模板裡

int

find()

return sum[head]

;}

完整模板(根據題目要求進行修改)

int trie[

1005][

26];char s[

100]

;//bool over[1005]; 查詢整個單詞時候用到

int tot=0;

//int sum[1005]; 字首數量

void

insert()

head=trie[head]

[x];

// sum[head]++;//記錄個數

}// over[head]=true;

}bool find()

return

true

;// return over[head];

}//int find()

// return sum[head];

//}

鍊錶寫法:

#include

#include

#include

#include

using namespace std;

char s[11]

;int n, m;

bool p;

struct node

*root;

node*

build()

void

insert()

}int

search()

return r-

>count;

}int

main()

scanf

("%d"

,&m)

;for

(int i =

1; i <= m; i++

)}

推薦使用陣列寫法

陣列做法不管是在時間,空間,**量上都要優於鍊錶做法。

ac**:

#include 

#include

using namespace std;

int trie[

1000005][

26];int tot =0;

char s[

105]

;int sum[

1000005]=

;void

insert()

head = trie[head]

[x];

sum[head]++;

}}intfind()

return sum[head];}

intmain()

while

(cin.

getline

(s,105))

printf

("%d\n"

,find()

);return0;

}

hdu 2846 repository(trie樹)

題解:另一篇部落格

Trie樹(字典樹)

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

字典樹 Trie樹

字典樹 trie樹 顧名思義是一種樹形結構,屬於雜湊樹的一種。應用於統計 排序 查詢單詞 統計單詞出現的頻率等。它的優點是 利用字串的公共字首來節約儲存空間,最大限度地減少無謂的字串比較,查詢效率比雜湊表高。字典樹的結構特點 根節點不代表任何字元。其他節點從當前節點回溯到根節點可以得到它代表的字串。...

字典樹 trie樹

amy 56 ann 15 emma 30 rob 27 roger 52首先存入amy,level 0表示根,不持有資料。其餘每個節點持有乙個字元 葉子節點持有資料,且持有的字元為 0 level 0 root a level 1 m level 2 y level 3 0 56 level 4新...