Trie 字典樹 的遞迴版本

2021-10-04 02:44:46 字數 1633 閱讀 7293

private void insert(node node,string word,int index)在以node為根的trie樹中插入以index開始的子串(word[index,...,end])

private boolean contains(node node,string word,int index):在以node為根的trie中查詢是否存在從index開始的子串(word[index,...,end])

private boolean isprefix(node node,string word ,int index):在以node為根的trie中檢索是否存在以index開始的子串為字首(word[index,...,end])

例如:

class

trie

public

node()

}private node root;

private

int size;

trie()

public

intgetsize()

public

void

insert

(string word)

//向以node為根的trie樹中新增從index開始的子串(word[index...end])

private

void

insert

(node node,string word,

int index)

return;}

char c=word.

charat

(index);if

(node.children.

get(c)

==null) node.children.

put(c,

newnode()

);insert

(node.children.

get(c)

,word,index+1)

;}public

boolean

contains

(string word)

//在以node為根的trie樹彙總查詢是否存在以index開始的子串(word[index...end])

public

boolean

contains

(node node,string word,

int index)

public

boolean

isprefix

(string word)

//在以node為根的trie樹中查詢是否以index開始的子串(word[index...end])

public

boolean

isprefix

(node node,string word,

int index)

}

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