字典樹的應用

2021-09-06 12:34:21 字數 1473 閱讀 6028

又稱單詞查詢樹,

trie樹

,是一種

樹形結構

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

雜湊表高。

定義

1 typedef struct

trie2;

67 trie root;

字典樹的建立插入

void insert(char *str)

p->next[id]=q;

p=p->next[id];

}else

}if(p->key!=-1

)

else

p->key=-1

;}

資料結構有關單詞的搜尋

★資料輸入

輸入第一行為乙個正整數n ( n < =10000)。

接下來n行,每行開頭是乙個數字1或者2。

如果是1,後面會有乙個單詞,代表winder在筆記本上記錄下這個單詞。每個單詞僅

由小寫的英文本母組成,且長度不超過8。

如果是2,則代表winder想知道現在他已經背了幾個不同的單詞。

★資料輸出

對於每個詢問,輸出一行乙個整數,表示winder已經背的不同的單詞個數。

輸入示例輸出示例

101 winder

21 hello

1 what

1 holy

1 hello

21 acm

1 winder

2輸出:

1451,建立字典樹

2,每個單詞的最後乙個結點位置標記為-1;如果插入單詞到最後乙個節點值key不為-1,為多乙個生詞count++;

附**:

1 #include2 #include

3 #include4 typedef struct

trie5;

910trie root;

1112

int count=0;13

void insert(char *str)

1428 p->next[id]=q;

29 p=p->next[id];30}

31else

3235}36

if(p->key!=-1)37

41else

42 p->key=-1;43

}4445int

main()

4660

else

if(x==2

)61 printf("

%d\n

",count);62}

63return0;

64 }

view code

字典樹的應用

論吹牛,學弟一點也不輸個學長。為了找到自己的存在感,學弟又和學長在比誰前女友多,於是2個人撕逼開始了,學弟說我在大一的時候談了a個女朋友,學長說那是我乙個星期的 數量,我大一的時候談了ab個女朋友,學弟又說加上高中的我談了abc個女友,學長再次 不服,加上高中我談了abcdf個女朋友 想必大家已經明...

字典樹應用

trie,又稱字典樹 單詞查詢樹,是一種樹形結構,用於儲存大量的字串。它的優點是 利用字串的公共字首來節約儲存空間。相對來說,trie樹是一種比較簡單的資料結構.理解起來比較簡單,正所謂簡單的東西也得付出代價.故trie樹也有它的缺點,trie樹的記憶體消耗非常大.當然,或許用左兒子右兄弟的方法建樹...

字典樹及其應用

字典樹是一種比較特殊的樹,邊上有邊權 至少我是怎麼理解的 又名 trie 樹。大概長這樣 插入了cap,cat,csp,co,code 邊上是字符集,點上是點的編號,塗成藍色的代表是單詞的結尾。字符集可以是a z,0 9,true和false等等。字典樹有效的組織了單詞的關係,節省了時間和空間。vo...