字典樹 陣列方式實現

2021-10-24 10:51:27 字數 724 閱讀 3942

在詞典中查詢某個單詞時,例如:boy,我們會先找到 『b』,然後找到 『o』,最後找到 『y』。這個過程的時間複雜度是 o(m),m 為單詞的長度。

字典樹是模擬這個過程的資料結構,十分高效。例如儲存 do,dog,boy,bob,結構如下:

可以看見,公共字首僅儲存了一遍 ,字典樹在空間上的效率也很高。但若用本身的結構來儲存仍然會占用大量空間,用陣列來儲存字典樹可以以非常緊湊的方式節約大量空間。

int pos =1;

int trie[

1000010][

26];//儲存下乙個字元的位置

int num[

1000010];

//以此為字首的單詞的數量

//bool tail[1000010]; 標記某個字元是否為單詞結尾

void

insert

(char str)

p = trie[p]

[n];

num[p]++;

//根據需要打上標記

//if(!str[i + 1])}}

intfind

(char str)

p = trie[p]

[n];

}return num[p]

;}

FIFO實現 陣列方式

檔案 config.h ifndef config h define config h ifndef true define true 1 endif ifndef false define false 0 endif typedef unsigned char uint8 typedef sign...

Trie字典樹陣列實現

include using namespace std const int n 10010 int son n 26 儲存下乙個字元的行 int count n 這個單詞單詞有多少個 int pos 當前新分配的儲存位置 char szstr n 讀取字串 void stringinsert con...

Python Trie樹 字典樹 的實現方式

今天學習到了trie樹 字典樹的詳細定義可以看 how to create a trie in python class trie def init self self.end end defmake trie self,words root dict for word in words curre...