trie树的特点:
拿内存换取时间,查询效率高
一、结点结构
public class TreeNode { char data;//节点数据 boolean isEnd;//是否是结束 LinkedList<TreeNode>childList;//子节点 int count;//计数; public TreeNode(char c){ this.data=c; isEnd=false; childList=new LinkedList<TreeNode>(); count=0; } //子节点字符 public TreeNode subNode(char c){ if(childList!=null){ for(TreeNode t:childList){ if(t.data==c)return t; } } return null; } }
二、树的生成
public class TrieTree { //根节点根节点为空值 private TreeNode root; //实例化的时候root的数据位空值 public TrieTree(){ root=new TreeNode(' '); } public void insertNode(String word){ if(searchNode(word))return; TreeNode current = root; for(int i = 0; i < word.length(); i++){ TreeNode child = current.subNode(word.charAt(i)); if(child != null){ current = child; } else { current.childList.add(new TreeNode(word.charAt(i))); current = current.subNode(word.charAt(i)); } current.count++; } // Set isEnd to indicate end of the word current.isEnd = true; } //搜索 //由于他的第一个字符是否存在于root的子节点中然后顺藤 public boolean searchNode(String word){ TreeNode tn=root; for(int i=0;i<word.length();i++){ if(tn.subNode(word.charAt(i))==null){ return false; }else{ tn=tn.subNode(word.charAt(i)); } } return tn.isEnd; } }
相关推荐
一个简单的C语言程序:用Trie树实现词频统计和单词查询
- 应用于搜索引擎中,预先构建好一个包含大量关键词的Trie树,当用户输入查询词时,可以快速判断是否存在匹配项。 - 在词频统计中,可以通过Trie树快速统计文本中各个词汇的出现频率。 2. **字符串最长公共前缀**...
### 基于双数组Trie树中文分词研究 #### 概述 本文献针对中文信息处理中的分词问题,研究了一种基于双数组Trie树(Double-Array Trie, DAT)的优化方法。传统的分词算法面临着空间利用率低、插入速度慢等问题,...
使用哈希表虽然也能解决这个问题,但面对前缀查询等复杂需求时,Trie树的优势更为明显。 【后缀树】 后缀树是Trie树的一种扩展,它能够存储字符串的所有后缀,并且每个后缀都在树中以唯一的路径表示。后缀树的主要...
Trie树特别适用于大量字符串集合的前缀查询,例如在自动补全、IP路由或关键词过滤等场景。 在压缩包中,"trie.c"可能是C语言实现的Trie树代码,而"trie.exe"是编译后的可执行程序,可用于实际操作Trie树。"kmp.py...
这个项目“基于Trie树模仿谷歌百度搜索框提示”旨在实现类似谷歌和百度搜索引擎的自动补全功能。我们将深入探讨Trie树数据结构以及如何使用Java来构建这样的系统。 首先,我们要理解什么是Trie树,也被称为前缀树或...
Trie 树,也称为字典树,是一种树形数据结构,用于高效存储和查询字符串。其核心思想是空间换时间,即通过占用更多的存储空间来换取查询速度的提高。 Trie 树的基本结构是一个节点数组,每个节点对应一个字符,从根...
### ACM Trie树详解 #### 一、Trie树的基本概念 **Trie树**,又称为**字典树**或**前缀树**,是一种用于高效存储和检索字符串的树形数据结构。它通过利用字符串之间的公共前缀来减少查询时间,从而提高搜索效率。...
2、有序HASH(Trie)树SDK中的API支持以下功能 1)插入节点 2)精确删除节点 3)正向模糊匹配 4)反向模糊匹配 5)精确查询节点 6)获取头(尾)节点 7)删除头(尾)节点 8)排序 9)支持多级树 10)...
它是由日本学者高津陵提出的一种优化版的Trie树,通过将Trie树中的节点数据存储为两个数组,极大地提高了查询效率。 ### 1. Trie树基础 Trie树,又称“前缀树”或“字典树”,是一种有序树,用于存储关联数组,...
5. POJ2503 - 在这个题目中,我们需要建立一个Trie树,用以查询某国语言单词对应的英语单词。在树的每个节点存储对应的英语单词,这样查询时就能快速找到匹配项。 6. POJ2513 - 这是一个涉及图形理论的问题,但Trie...
3. 查询函数,如`search(char *str)`,用于检查字符串是否在Trie树中。 4. 可能还包含其他辅助函数,如`initTrie()`初始化Trie树,`destroyTrie()`销毁Trie树,以及用于测试和调试的`printTrie()`打印Trie树结构等。...
2、Trie树SDK中的API支持以下功能 1)插入节点 2)精确删除节点 3)正向模糊匹配 4)反向模糊匹配 5)精确查询节点 6)获取头(尾)节点 7)删除头(尾)节点 8)排序 9)支持多级树 10)支持强大的查询节点功能 ...
Trie树,又称前缀树或字典树,是一种用于存储字符串的数据结构,它在IT领域尤其是数据结构和算法的学习中占据着重要的地位。这个压缩包包含的“王赟.doc”和“王赟.ppt”很可能是关于Trie树的详细讲解和实践题目,...
与Trie树不同,后缀树是一种更为复杂的结构,它能够快速解决许多字符串问题,如查询字符串是否包含某子串,查找字符串的最长重复子串,以及多模式串的模式匹配等问题。后缀树之所以强大,在于它将字符串的所有后缀...
Trie是一种树型数据结构,用于存储字符串,可以实现字符串的快速查找。Trie的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。 适用范围:统计和排序大量的字符串
双数组树Trie,也称为Double-Array Trie,是一种高效的词典查询算法,它解决了传统Trie树在空间效率上的问题。在汉语信息处理系统中,词典查询扮演着至关重要的角色,因为需要频繁地访问词典以获取词汇信息。传统的...
- **查询速度**:优化后的算法显著提高了查询速度,这是由于双数组Trie树本身具有的高效查找特性,再加上优化策略减少了数据稀疏性,进一步提升了查找效率。 - **存储空间**:优化后的词典占用的空间比未优化或...