Tire树,又叫字典树,主要是用来查找单词,词频统计的.

老规矩,直接上代码.

package tireTree;

public class TireTree {
TireNode root; public TireTree(TireNode root) {
this.root = root;
} private void insertElement(TireNode root, String word) {
if (word == null || word.isEmpty())
return;
char[] elements = word.toCharArray();
int index = elements[0] - 'a';
if (root.getNode()[index] == null) {
root.getNode()[index] = new TireNode();
root.getNode()[index].setElement(elements[0]);
}
if (word.length() == 0)
return;
insertElement(root.getNode()[index], word.substring(1));
} private boolean searchWord(TireNode root, String word) {
if (word == null || word.isEmpty())
return false;
TireNode p = root;
int index = 0;
while (p != null && index < word.length()) {
int k = word.charAt(index) - 'a';
if (root.getNode()[k] != null) {
if (index == word.length() - 1) {
root.getNode()[k].setFreq(root.getNode()[k].getFreq() + 1);
return true;
} else {
root = root.getNode()[k];
index++;
}
} else {
return false;
}
}
return false;
} public static void main(String[] args) {
TireNode root = new TireNode();
TireTree tree = new TireTree(root);
String context = "My Name is Tom,What is your name?My name is Jenny.";
String target = "tom";
for (String word : TireTree.transContext(context)) {
tree.insertElement(root, word);
}
System.out.println(tree.searchWord(root, target));
} public static String[] transContext(String context) {
String c = context.toLowerCase();
c = c.replaceAll("[,?!.]", " ");
c = c.substring(0, context.length() - 1);
return c.split(" ");
}
} class TireNode {
private TireNode[] node;
private int freq;
private char element; public void setElement(char element) {
this.element = element;
} public TireNode() {
node = new TireNode[26];
freq = 0;
} public TireNode[] getNode() {
return node;
} public int getFreq() {
return freq;
} public char getElement() {
return element;
} public void setNode(TireNode[] node) {
this.node = node;
} public void setFreq(int freq) {
this.freq = freq;
} }

  

Java Trie树的更多相关文章

  1. Trie树(转:http://blog.csdn.net/arhaiyun/article/details/11913501)

    Trie 树, 又称字典树,单词查找树.它来源于retrieval(检索)中取中间四个字符构成(读音同try).用于存储大量的字符串以便支持快速模式匹配.主要应用在信息检索领域. Trie 有三种结构 ...

  2. Trie 树 及Java实现

    来源于英文“retrieval”.   Trie树就是字符树,其核心思想就是空间换时间. 举个简单的例子.   给你100000个长度不超过10的单词.对于每一个单词,我们要判断他出没出现过,如果出现 ...

  3. java实现的Trie树数据结构

    近期在学习的时候,常常看到使用Trie树数据结构来解决这个问题.比方" 有一个1G大小的一个文件.里面每一行是一个词.词的大小不超过16字节,内存大小限制是1M. 返回频数最高的100个词. ...

  4. 双数组Trie树(DoubleArrayTrie)Java实现

    http://www.hankcs.com/program/java/%E5%8F%8C%E6%95%B0%E7%BB%84trie%E6%A0%91doublearraytriejava%E5%AE ...

  5. Trie树的java实现

    leetcode 地址: https://leetcode.com/problems/implement-trie-prefix-tree/description/ 难度:中等 描述:略 解题思路: ...

  6. Trie树(字典树)的介绍及Java实现

    简介 Trie树,又称为前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串.与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定.一个节点的所有子孙都有相同的前缀,也 ...

  7. Trie树-字典查找

    描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题: ...

  8. Trie树的应用:查询IP地址的ISP

    1. 问题描述 给定一个IP地址,如何查询其所属的ISP,如:中国移动(ChinaMobile),中国电信(ChinaTelecom),中国铁通(ChinaTietong)?现有ISP的IP地址区段可 ...

  9. 字典树(Trie树)的实现及应用

    >>字典树的概念 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树.与二叉查找树不同,Trie树的 ...

随机推荐

  1. centos 用户管理

    3.使用命令管理账户 useradd 选项  用户名//添加新用户 usermod 选项  用户名//修改已经存在的用户 userdel -r    用户名//删除用户表示自家目录一起删除. grou ...

  2. 第一部分 代码组织概念,集成开发环境(IDE)

    代码组织概念 主要是代码文件,项目和解决方案. 解决方案(.sln)包含多个项目(.csproj),一个项目又包含多个文件(.cs). 集成开发环境(IDE): 由编辑.编译.调试,以及用户图形界面, ...

  3. jdbc数据连接池dbcp要导入的jar包

    jdbc数据连接池dbcp要导入的jar包 只用导入commons-dbcp-x.y.z.jarcommons-pool-a.b.jar

  4. Bootstrap入门(二十五)JS插件2:过渡效果

    Bootstrap入门(二十五)JS插件2:过渡效果 对于简单的过渡效果,只需将 transition.js 和其它 JS 文件一起引入即可.如果你使用的是编译(或压缩)版的bootstrap.js  ...

  5. es6笔记5^_^set、map、iterator

    一.set 1.基本用法 数据结构Set类似于数组,但是成员的值都是唯一的,没有重复的值. let s = new Set(); [2,3,5,4,5,2,2].map(x => s.add(x ...

  6. 基于ssh反向代理实现的远程协助

    本文描述了怎么通过ssh反向代理实现远程协助,并提供了相关代码. 可满足web开启远程协助功能后,维护人员能够通过ssh和http登录客户机器(包括在nat环境下) web开启该功能后,ssh才能登录 ...

  7. 有关C#分部类型的一些叙述

    等待着元宵节的到来,过完元宵,这个年也算是过完了,也得开始出去挣钱了,过年回家感觉每个人都觉得很牛,只有自己太渣,为了避免年底再出现这样尴尬的局面,还是需要努力干活.争取当上CEO,赢取白富美,走上人 ...

  8. vs生成配置release自动恢复成debug无法配置的问题

    软件为visual studio 2015,右键单个项目选属性,设置“生成配置”release,保存后,再次右键属性,却发现又自动恢复成debug,怎么回事?是无法配置吗?点击生成试试,果然2b了. ...

  9. JAVA中的基本数类型据

    一.基本类型​ byte: java中最小的数据类型.1字节/8位.-128(2^7)~127(2^7-1),默认值0. short: 短整型,2字节/16位,取值范围-32768(--2^15)~3 ...

  10. C++学习的心路历程之心理障碍

    断断续续的C++学习已经过了1年多了,可是,我还是没有迈出可以自如输出写点什么的那一步.甚至我因为这个老是怀疑自己的智商,我是真心想学懂,因为这个关系到我的就业,直接关系到我的饭碗.我是十分的着急,可 ...