算法导论—Trie树
2016-04-02 22:46
197 查看
华电北风吹
日期:2016-04-02
Trie树,又名前缀树。Trie树的存储结构与B树类似。需要注意的一点是Trie树的节点不保存任何信息,所有的信息都保存在边上。Trie树比较简单,直接上代码吧。
日期:2016-04-02
Trie树,又名前缀树。Trie树的存储结构与B树类似。需要注意的一点是Trie树的节点不保存任何信息,所有的信息都保存在边上。Trie树比较简单,直接上代码吧。
struct TrieNode { int count; TrieNode* next[26]; bool exist; TrieNode() :count(0), exist(false); }; void Insert(TrieNode* root, string word) { TrieNode* node = root; for (int i = 0; i < word.length(); i++) { int id = word[i] - 'a'; if (node->next[id] == NULL) { node->next[id] = new TrieNode(); } node = node->next[id]; node->count += 1; } node->exist = true; } int Search(TrieNode* root, string word) { TrieNode* node = root; for (int i = 0; i < word.length(); i++) { int id = word[i] - 'a'; node = node->next[id]; if (node == NULL) return 0; } return node->count; } int main(void) { TrieNode* root = new TrieNode(); int n; string s; cin >> n; for (int i = 0; i < n; i++) { cin >> s; Insert(root, s); } cin >> n; for (int i = 0; i < n; i++) { cin >> s; cout << Search(root, s) << endl; } return 0; }
相关文章推荐
- Android WebView常见问题及解决方案汇总
- 字符串反转的进一步应用----单词反转
- day24 订单删除 & 打印销量排行榜 & 在线支付
- 通过udl文件得到连接字符串
- 重载方法调用精确匹配问题
- OSChina 周日乱弹 ——我18岁了都没睡过男人
- 活动选择
- C++实践参考:IP地址类
- 编码又闹出了小问题
- 2006年清华大学计算机研究生机试真题
- 笔试题——对称二叉树
- SP5000系列烧录器大小端转换C语言实现
- 数据结构知识基础之指针
- 装船问题
- viewpager最后一个view滑动开启另一个activity等的方法
- 资源
- 学习 个人总结
- 人脸美化随笔2——美化算法总结
- 正则表达式---简化字符串操作
- Swift 基础语法