字典樹 Trie樹

2022-03-01 12:42:37 字數 974 閱讀 4121

什麼是trie樹?

形如

其中從根節點到紅色節點的路徑上的字母所連成的字串即為乙個trie樹上所存的字串。

比如,這個trie樹上有ab,abc,bd,dda這些字串。

至於怎麼構建和查詢或新增。

簡單的一批,看**就能看懂。

不過trie樹所佔的空間很大,有一些優化,暫時還沒學。

1 #include 2 #include 3 #include 4

5using

namespace

std;67

#define idx(x) x - 'a'

8const

int maxn = 10000;9

struct

trie

10tree[maxn];

1415

int nex, t;//

nex表示tree中下標

16char

str[maxn];

1718

void insert(char *s)//

插入 19

27 tree[rt].val = 1;28

}2930bool find(char *s)//

查詢 31

39if(tree[rt].val) return1;

40return0;

41}4243

intmain()

4451

while(scanf("%s"

, str))

52if(find(str)) printf("

yes\n");

53else printf("

no\n");

54return

0;

55 }

view code

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新...