資料結構 字首樹

2021-09-18 01:23:06 字數 1175 閱讀 5722

trie樹,又叫字典樹、字首樹(prefix tree)、單詞查詢樹或鍵樹,是一種多叉樹結構。如下圖:

①根節點不包含字元,除根節點外的每乙個子節點都包含乙個字元。

②從根節點到某乙個節點,路徑上經過的字元連線起來,為該節點對應的字串。 

③每個節點的所有子節點包含的字元互不相同。 

④從第一字元開始有連續重複的字元只占用乙個節點,比如上面的body,boy和boat,中重複的單詞o只占用了乙個節點。

①字首匹配

②字串檢索 

③詞頻統計  

④字串排序

//假設所有的輸入都是由小寫字母 a-z 構成的。

//所有輸入均為非空字串。

class trie

public void insert(string word)

node = node.children[c-'a'];

}node.item = word;

}public boolean search(string word)

node = node.children[c-'a'];

}return node.item.equals(word);

}public boolean startswith(string prefix)

node = node.children[c-'a'];

}return true;

}//定義 字首樹節點 的結構

class trienode

}

public class test 

}

true

false

true

public class testtrie ;

for(int i=0;ichildren = new hashmap<>();

}

字首樹和dfa演算法的理念很像,而且實現比我之前寫的dfa演算法的還要簡短和好理解,感覺dfa那篇的實現不是很好,字首樹完全可以實現。

dfa演算法

資料結構之字首樹 Trie

字首樹,又叫字典樹,主要用於字串 不限於字串 查詢 統計 排序的一種資料結構 比如,給定n個字串,進行m次查詢,每次查詢給定乙個字串 t,問t 是否存在於那給定的n個字串裡 這裡,我們用到了字首樹,即將每個字串看作一條鏈,把擁有相同字首的字串的鏈的相同字首給合併,形成一棵棵子樹。如給定三個字串his...

Trie 字首樹 字典樹 單詞查詢樹(資料結構)

在寫完了kmp演算法的部落格之後,我下定決心,一定要寫出一篇關於 ac自動機的部落格 ac自動機實際上就是字典樹上的kmp演算法。所以,考慮到廣大同學不一定會寫trie樹,特此在此處寫了一篇文章介紹介紹這種資料結構。字典樹 又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用...

資料結構之字典樹,字首樹 Trie

public class trie public node private node root trie樹的根結點 private int size 樹中結點個數 public trie public int getsize 向字典樹中新增單詞 public void add string str ...