字典樹小總結 caioj1463

2021-08-08 13:18:24 字數 1485 閱讀 5206

學了一發字典樹

發現其實就是乙個儲存資料結構的東西。。可以省空間

首先有乙個根,這個根無實際意義

根往下到葉子節點的每條路徑,儲存的都是乙個串

這樣就顯而易見了對吧

由於許多個字串開頭有可能相同的,那我們就可以用乙個類似樹型結構的東西存啦

類似下面這張圖

那麼abcd就儲存在了從左往右的第一條鏈

abd就存在了第二條鏈

以此類推……

查詢就更加簡單啦。看看對於每個節點,他的孩子中是否存在下乙個字元,不存在就return false,存在就繼續找直到字串查詢完畢啦

題意

給出很多個字串(只有小寫字母組成)和很多個提問串,統計出以某個提問串為字首的字串數量(單詞本身也是自己的字首).

輸入格式

輸入n,表示有n個字串(n<=10000)

接下來n行,每行乙個字串,字串度不超過10

輸入m,表示有m個提問(m<=100)

第二部分是一連串的提問,每行乙個提問,每個提問都是乙個字串.

輸出格式

對於每個提問,給出以該提問為字首的字串的數量.

樣例輸入

5

banana

band

bee

absolute

acm

4 ba

b band

abc

樣例輸出

2

3 1

0

題解

字典樹標程

每個節點記錄乙個s表示以根到該節點的串為字首的串有多少個

那麼每個提問串跑進字典樹問一問就好啦,最後輸出提問串最後乙個字元的s

#include

#include

#include

#include

#include

using

namespace

std;

struct node

}tr[110000];int tot;

void add(char *s,int root)

}int find(char *s,int root)

return tr[x].s;//不然輸出這個串的最後乙個字元的s

}int n,m;

char s1[11000];

int main()

scanf("%d",&m);

while(m--)

return

0;}

字典樹(模板 總結)

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

字典樹學習總結

解決問題 主要應對多次查詢,典例就是字典,字典樹就是一本字典,字典的最大好處就是能快速查詢 主要原理 我們在查某乙個單詞時總會先索引第乙個字母,然後在查第二個字母,以此類推直到查到此單詞為止,那麼字典樹的查詢過程也是如此,先查第乙個字母的節點位置,然後在該節點的子節點之中查詢第二個字母的位置,以此類...

字典樹的總結

time limit 2000 ms memory limit 65536 kib submit statistic problem description ff得到了乙個有n個數字的集合。不要問我為什麼,有錢,任性。ff很好奇的想知道,對於數字x,集合中有多少個數字可以在x前面新增任意數字得到。如...