当前位置: 首页 > news >正文

重庆忠县网站建设公司一家专门做印刷的网站

重庆忠县网站建设公司,一家专门做印刷的网站,做网站找哪个软件,嘉兴网站建设公司数据结构与算法-前缀树详解 1 何为前缀树 2 前缀树的代码表示及相关操作 1 何为前缀树 前缀树 又称之为字典树,是一种多路查找树,多路树形结构,是哈希树的变种,和hash效率有一拼,是一种用于快速检索的多叉树结构。 性质:不同字符串的相同…

数据结构与算法-前缀树详解

  • 1 何为前缀树
  • 2 前缀树的代码表示及相关操作

 

1 何为前缀树

 
前缀树 又称之为字典树,是一种多路查找树,多路树形结构,是哈希树的变种,和hash效率有一拼,是一种用于快速检索的多叉树结构。

性质:不同字符串的相同前缀只保存一份。

操作:查找,插入,删除

例如 字符数组
[“abc”,“bck”,“abd”,“ace”]
构建成一颗前缀树


 

2 前缀树的代码表示及相关操作

 

 

前缀树中的节点

 

coding

public static class TrieNode {public int pass;//前缀树节点被经过的次数public int end;// 多少个字符串在此点结尾public TrieNode[] nexts;// 下一个节点// 当字符种类很多的时候 可以使用HashMap// public Map<Character,TrieNode> trieNodeMap;// key 某条图  value 指向的下一个节点public TrieNode(){// trieNodeMap = new HashMap<>();//无序使用Hash表// trieNodeMap = new TreeMap<>();// 有序使用有序表this.pass = 0;this.end = 0;nexts = new TrieNode[26];}
}

 

前缀树代码表示及相关操作

 

public static class Trie {private TrieNode root;//头结点public Trie() {this.root = new TrieNode();}/*** 将字符串word加入到前缀树中** @param word*/public void insert(String word) {if (word == null) {return;}char[] chars = word.toCharArray();TrieNode node = root;node.pass++;int index = 0;// 从左往右遍历字符串for (int i = 0; i < chars.length; ++i) {// 由字符计算得出 该走哪条路index = chars[i] - 'a';//如果没有此字符的路 则新建if (node.nexts[index] == null) {node.nexts[index] = new TrieNode();}//来到下一个节点node = node.nexts[index];node.pass++;}node.end++;}/*** @param word* @return 字符串在前缀树中加入过几次*/public int search(String word) {if (word == null) {return 0;}// 临时前缀树节点 用于遍历前缀树TrieNode node = root;char[] chars = word.toCharArray();int index = 0;for (int i = 0; i < chars.length; ++i) {index = chars[i] - 'a';// 没有通往当前字符串的路 则说明没有加入过这个字符串 直接返回 0if (node.nexts[index] == null) {return 0;}// 下一个节点node = node.nexts[index];}// 所有字符的路都有  则返回最后一个节点的 end 值return node.end;}/*** @param pre* @return 有多少个字符串是以 pre开头的*/public int prefixNumber(String pre) {if (pre == null) {return 0;}TrieNode node = root;int index = 0;char[] chars = pre.toCharArray();for (int i = 0; i < chars.length; ++i) {index = chars[i] - 'a';if (node.nexts[index] == null) {return 0;}node = node.nexts[index];}return node.pass;}/*** 删除前缀树中的字符串word** @param word*/public void delete(String word) {if (search(word) != 0) { // 前缀树中存在字符串再删除char[] chars = word.toCharArray();TrieNode node = root;node.pass--;int index = 0;// 遍历每一个节点 将节点的pass值减 1for (int i = 0; i < chars.length; ++i) {index = chars[i] - 'a';if (--node.nexts[index].pass == 0) {node.nexts[index] = null;return;}node = node.nexts[index];}node.end--;}}
}
http://www.yayakq.cn/news/624656/

相关文章:

  • 石家庄哪个公司做网站好徐州网页
  • 网页设计模板的网站wordpress移动顶部导航
  • 辽宁省交通投资建设集团网站网站备案邮寄到哪里
  • 网站网站是否需要备案黄石网站建设报价
  • 用电脑建设个人网站 并用手机访问wordpress 主机
  • 最好的餐饮设计网站建设设计logo的手机软件免费
  • 做挖机配件销售的网站长沙整合推广
  • 海南网站搭建前段模板网站
  • 中国菲律宾数据百度seo优化
  • 网站腾讯备案网站申请空间
  • wordpress网站加载过慢舟山网站设计
  • 广汉网站快手刷评论推广网站
  • 网站建设费入什么科目2018wordpress支持大文件上传
  • 泰安放心的企业建站公司自己如何在网上做网站
  • 变更股东怎样在工商网站做公示网站开发费税率是多少
  • 魔站网站开发千牛商家版网站建设
  • 做鞋用什么网站好网站免费制作教程
  • 公司电子产品网站模板j建设网站
  • 网站开发项目提成在线制作图片的免费软件
  • 做p2p网站卖赚钱吗福州企业网站建设专业服务
  • 旅游网站建设规划书模板下载东莞做网站定制
  • 检察院门户网站建设自查自纠报告网站商城建设6
  • 模块化网站建设百度邮箱登录入口
  • 网站建设人员配置企业网查询天眼查
  • 成都网站建设 工资解决wordpress更改新域名后网站不能访问的问题
  • 惠城营销网站制作响应式网站的设计趋势
  • 深圳本地招聘网站有哪些做浏览单的网站有哪些
  • 查公司备案网站备案信息免费域名申请国外
  • dedecms网站地图四川省建设厅招标网站
  • 企业网站建设流程概述关于网页设计的论文范文