字串 Trie樹(字典樹)

2022-03-25 19:39:37 字數 1010 閱讀 9510

關於這個字串的資料結構我就不多說什麼了,不知道的可以戳這裡.

trie樹在oi中應用廣泛,時間優秀,缺點就是空間占用大。

(下文中我們將字符集大小稱為

k,模式串長度為p)

trie支援o(

np)建樹,o(

p)插入,查詢,刪除。

可是如果二維陣列儲存的話,就要耗費kn

的空間,基本無法承受。

空間上我們可以用指標動態分配記憶體來優化,減少記憶體的浪費。

trie樹還有一點好處,就是極易編寫,極易除錯,寫暴力很好用。

不過,一般還是不用trie樹的。

上一道模板題:

這題水到爆,最慢的點100ms(笑),所以是模板題。

code:

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

int ch[500001][26];

int tot;

int val[500001];

int cnt[500001];

void insert(char *p)

u=ch[u][c];

}val[u]=1;

}int cmp(char *t)

u=ch[u][c];

}if(!val[u])

if(!cnt[u])

else

}int n,m;

int main()

scanf("%d",&m);

for(int i=1;i<=m;i++)

else

if(num==1)

else

}return

0;}

字串 Trie字典樹

目錄 trie字典樹 例題 1.什麼是字典樹?2.字典樹的作用及性質 3.建樹 code 效果圖 4.查詢 code 5.優勢 6.回到例題 code 7.結束語 8.練習 給出n個字串,以及m個詢問。每次詢問讀入乙個字串,求該字串是多少個字串的字首 每個字串長度小於10 2,n和m小於10 5。樣...

Trie樹 字典樹(字串排序)

有時,我們會碰到對字串的排序,若採用一些經典的排序演算法,則時間複雜度一般為o n lgn 但若採用trie樹,則時間複雜度僅為o n trie樹又名字典樹,從字面意思即可理解,這種樹的結構像英文本典一樣,相鄰的單詞一般字首相同,之所以時間複雜度低,是因為其採用了以空間換取時間的策略。下圖為乙個針對...

Trie樹 字典樹 字串排序

有時,我們會碰到對字串的排序,若採用一些經典的排序演算法,則時間複雜度一般為o n lgn 但若採用trie樹,則時間複雜度僅為o n trie樹又名字典樹,從字面意思即可理解,這種樹的結構像英文本典一樣,相鄰的單詞一般字首相同,之所以時間複雜度低,是因為其採用了以空間換取時間的策略。下圖為乙個針對...