• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程技巧 > Trie树_字典树(字符串排序)简介及实现

Trie树_字典树(字符串排序)简介及实现

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-12

通过本文主要向大家介绍了Trie树_字典树(字符串排序)简介及实现等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1.综述

又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。
它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。

Trie树结构的优点在于:
1) 不限制子节点的数量;
2) 自定义的输入序列化,突破了具体语言、应用的限制,成为一个通用的框架;
3) 可以进行最大Tokens序列长度的限制;
4) 根据已定阈值输出重复的字符串;
5) 提供单个字符串频度查找功能;
6) 速度快,在两分钟内完成1998年1月份人民日报(19056行)的重复字符串抽取工作。

2.性质

它有3个基本性质:
1)     根节点不包含字符,除根节点外每一个节点都只包含一个字符。
2)     从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。
3)     每个节点的所有子节点包含的字符都不相同。

3.基本操作

其基本操作有:查找、插入和删除,当然删除操作比较少见.我在这里只是实现了对整个树的删除操作,至于单个word的删除操作也很简单.

4.实现方法

搜索字典项目的方法为:
  (1) 从根结点开始一次搜索;
  (2) 取得要查找关键词的第一个字母,并根据该字母选择对应的子树并转到该子树继续进行检索;
  (3) 在相应的子树上,取得要查找关键词的第二个字母,并进一步选择对应的子树进行检索。
  (4) 迭代过程……
(5) 在某个结点处,关键词的所有字母已被取出,则读取附在该结点上的信息,即完成查找。
其他操作类似处理
5. Trie原理——Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。

6.代码实现
    st

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-12Http 状态代码 指示(ajax,bs结构用的到)
  • 2017-05-12textarea 在IE和FF下换行无法正常显示的解决方法
  • 2017-05-12微信报警 zabbix实现详解
  • 2017-05-12qqwry.dat的数据结构图文解释第1/2页
  • 2017-05-12php和asp利用Shell.Application来执行程序的代码
  • 2017-05-12String与string的区别(注意大小写)
  • 2017-05-12设计高可用和高负载的网站系统的几个注意事项
  • 2017-05-12Git 教程之创建仓库详解
  • 2017-05-12github 常用命令总结大全
  • 2017-05-12Git的使用规范流程总结

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • cnblogs 运行代码功能尝试
    • 数据类型和Json格式分析小结
    • 软件测试面试如何测试网页的登录页面
    • Git 教程之标签详解
    • 编程趣事:当下流行编程语言的”讨厌”程度排行榜
    • 全民学编程之 Hello World
    • Web通信 分析工具 [推荐]
    • 动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍
    • HTTPS的七个误解
    • 2018,想成为软件测试师的你准备好了吗?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有