node

package trieTree;public class TrieTreeNode {final int MAX_SIZE=26; int nCount;//记录该字符出现次数  char ch; //记录该字符  TrieTreeNode[] child;  public TrieTreeNode() {  nCount=1;  child=new TrieTreeNode[MAX_SIZE];  }  }

tree

package trieTree;
import trieTree.TrieTreeNode;public class TrieTree {//字典树的插入和构建  public void createTrie(TrieTreeNode node,String str){  if (str==null||str.length()==0) {  return;  }  char[] letters=str.toCharArray();  for (int i = 0; i < letters.length; i++) {  int pos = letters[i] - 'a';    if (node.child[pos] == null) {    node.child[pos] = new TrieTreeNode();     }else {  node.child[pos].nCount++;  }  node.ch=letters[i];              node = node.child[pos];              }  }  //字典树的查找  public int findCount(TrieTreeNode node,String str){  if (str==null||str.length()==0) {  return -1;  }  char[] letters=str.toCharArray();  for (int i = 0; i < letters.length; i++) {  int pos = letters[i] - 'a';    if (node.child[pos] == null) {    return 0;     }else {  node=node.child[pos];  }             }  return node.nCount;  }  }

测试源码 test

package trieTree;
import trieTree.TrieTree;
import trieTree.TrieTreeNode;public class test {public static void main(String[] args){String[] strs={     "banana",     "band",     "bee",     "absolute",     "acm",     };     String[] prefix={     "ba",     "b",     "band",     "abc",     }; TrieTree tree = new TrieTree();  TrieTreeNode root=new TrieTreeNode();for (String s : strs) {    tree.createTrie(root, s);    }
//    tree.printAllWords();     for(String pre:prefix){     int num=tree.findCount(root,pre);     System.out.println(pre+" "+num);     }  }
}

java 数据结构源码--Trie树相关推荐

  1. java 数据结构源码--线段树

    线段树模板 package segmentTree;public class SegmentTree {private class Segment { int left; int right; int ...

  2. 数据结构源码笔记(C语言):Huffman树字符编码

    #include <stdio.h> #include<string.h> #define N 10 /*待编码字符的个数,即树中叶结点的最大个数*/ #define M 2* ...

  3. 数据结构源码笔记(C语言):哈夫曼树

    #include <stdio.h> #include <stdlib.h> #define MAXINT 2147483647 #define MAXNUM 50 #defi ...

  4. 数据结构源码笔记(C语言):B树的相关运算算法

    //B树的相关运算算法#include<stdio.h> #include<malloc.h>#define MAXM 10//定义B树最大的阶数 typedef int Ke ...

  5. 数据结构源码笔记(C语言描述)汇总

    数据结构源码笔记(C语言):英文单词按字典序排序的基数排序 数据结构源码笔记(C语言):直接插入排序 数据结构源码笔记(C语言):直接选择排序 数据结构源码笔记(C语言):置换-选择算法 数据结构源码 ...

  6. 数据结构源码笔记(C语言):英文单词按字典序排序的基数排序

    //实现英文单词按字典序排序的基数排序算法#include<stdio.h> #include<malloc.h> #include<string.h>#defin ...

  7. 数据结构源码笔记(C语言):索引文件建立和查找

    //实现索引文件建立和查找算法#include<stdio.h> #include<malloc.h> #include<string.h> #include< ...

  8. 数据结构源码笔记(C语言):快速排序

    //实现快速排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...

  9. 数据结构源码笔记(C语言):冒泡排序

    //冒泡排序算法实现 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...

最新文章

  1. idea项目依赖导入失败_解决idea导入项目后依赖报错问题
  2. 第二十八讲 解非齐次线性方程组
  3. “AI+”农业向农民致敬-丰收节交易会:谋定工业反哺农业
  4. 如何成为有思想、创新的程序员
  5. 澳洲天才医生寻根(转)
  6. 欢迎使用Java 8之前要重温的10个JDK 7功能
  7. CentOS 报no acceptable C compiler found in $PATH的解决办法
  8. 01-执行上下文与变量对象
  9. Jquery 中each循环嵌套的使用示例教程
  10. The Unsolvable Problem
  11. dialog问题记录
  12. java代码如何降低重复率_JAVA 如何实现大文本去除重复行
  13. C#委托之个人理解(转)
  14. 2010 模板下载 罗斯文_利用模板建立ACCESS数据库—ACCESS图解操作系列(二)
  15. Vista home版连Win7旗舰版的远程桌面,提示“您的凭据不工作”的解决方法
  16. Mac 安装仿宋GB2312 For Word/WPS
  17. graphpad7.04多组比较p值_GraphPad Prism 统计指南 | 什么是P值?
  18. 2021强网拟态防御国际精英赛 reverse: babytms
  19. ONLYOFFICE Docs如何与NEXTCLOUD 24连接集成
  20. 腾讯高工保姆级“Java成长手册”,层层递进,全是精华!Github上都没有!

热门文章

  1. 【Java 网络编程】UDP 服务器 与 客户端持续交互 案例
  2. 【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
  3. 如何使用Laravel Debugbar?
  4. redis-sentinel 主从复制高可用
  5. 求不同字母全排列两种递归模板
  6. 蓄电池容量和环境温度的关系
  7. Sql server 2005系统表详细说明
  8. Shodan搜索引擎介绍
  9. 最详细的CISCO路由器配置命令及方法
  10. java的动态代理机制详解