美文网首页
Trie 树(一):简介

Trie 树(一):简介

作者: 蓝天白云bubble | 来源:发表于2019-03-03 11:33 被阅读0次

本文内容主要来源:http://www.cnblogs.com/konrad/p/7746030.html

       一、基本概念
        Trie 树又称字典树、单词查找树、前缀树等,是一种树形结构。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计等。

       优点:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比较高。

       缺点:基于空间换时间的思想,所以系统中若存在大量的没有公共前缀的字符串则会消耗大量内存。

       核心思想:空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。

       三个特性:
       1. 根节点不包含字符,除根节点外每一个节点都只包含一个字符。
       2. 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。
       3. 每个节点的所有子节点包含的字符都不相同。
       例:and, as, at, cn, com构建的 Trie 树如下:


trie.png

       二、Trie 树的基本操作
       假设存在字符串 str,Trie树的根结点为 root,i=0,p=root

       1. 插入
       1) 取 str[i],判断 p->next[str[i]-'a'] 是否为空,若为空,则建立结点 temp,并将 p->next[str[i]-‘a’] 指向 temp,然后 p 指向 temp;若不为空,则 p=p->next[str[i]-'a'];
       2) i++,继续取 str[i],循环1) 中的操作,直到遇到结束符 '\0',此时将当前结点 p 中的 isStr 置为 true,表示从根节点到当前节点这条路径上的字符组成的字符串是一个词。

       2. 查找  
       1) 取 str[i],判断判断 p->next[str[i]-‘a’] 是否为空,若为空,则返回 false;若不为空,则 p=p->next[str[i]-'a'],继续取字符。
       2) 重复1)中的操作直到遇到结束符 '\0',若当前结点 p 不为空并且 isStr 为 true,则返回 true,否则返回 false。

       3. 删除
       可以递归删除整棵树

三、Trie 树的复杂度
       1. 插入、查找的时间复杂度均为 O(N), N为字符串的长度。
       2. 英文字符为例,空间复杂度是 26^n, 可采用<双数组实现>来改善。

四、Trie 树的应用场景
       1. 字符串检索、词频统计
       将已知的一些字符串(字典)的有关信息实现保存到 trie 树里,查找另外一些未知字符串是否出现过或者出现频率。

       2. 字符串最长公共前缀
       Trie 树利用多个字符串的公共前缀来节省存储空间,反之,当我们把大量字符串存储到一棵 trie 树上时,我们可以快速得到某些字符串的公共前缀。

       3. 排序
       只要先序遍历整棵树,输出相应的字符串便是按字典排序的结果。

上一篇:python3 通过 pymysql 操作 mysql 数据库
下一篇:Trie 树(二):java 简单实现

相关文章

  • Trie 树(一):简介

    本文内容主要来源:http://www.cnblogs.com/konrad/p/7746030.html ...

  • Trie树

    Trie树简介 Trie 树,也叫字典树或者叫前缀树。顾名思义,它是一个树形结构。它是一种专门处理字符串匹配的树状...

  • 一种好用的树结构:Trie树

    Trie树简介 在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串...

  • 树结构之Trie

    1. 什么是trie树 1.Trie树 (特例结构树)Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈...

  • trie树

    文章内容来自 Trie树:应用于统计和排序Trie树 trie树又称:字典树、单词查找树、前缀树等,总之是一种树状...

  • Trie树

    一、定义 Trie树,又称为单词查找树,是一种树形结构(Trie一词源于单词Retrieval-取出)。Trie树...

  • 实现 Trie

    数据结构之Trie树Trie树:应用于统计和排序

  • leetcode——字典树(Trie树)的实现

    leetcode——实现Trie(前缀树) 题目 实现一个 Trie (前缀树),包含 insert, searc...

  • 《恋上数据结构与算法一》笔记(十九)Trie

    目录 Trie简介 接口设计 总结 一 Trei 简介 二 接口设计 测试代码 运行结果如下 三 总结 Trie ...

  • 《数据结构与算法》总结(九)Trie

    目录 Trie简介 接口设计 总结 一 Trei 简介 二 接口设计 测试代码 运行结果如下 三 总结 Trie ...

网友评论

      本文标题:Trie 树(一):简介

      本文链接:https://www.haomeiwen.com/subject/qarpuqtx.html