美文网首页
算法导论:字典树

算法导论:字典树

作者: Bowiee | 来源:发表于2019-07-29 10:35 被阅读0次

算法导论:字典树

定义:Trie树,即字典树,又称单词查找树或键树。是一种用于快速检索的多叉树结构。
     Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。
优点:最大限度地减少无谓的字符串比较。

如果我们给定字符串集合为{b abc abd bcd abcd efg hii},那么这个字符串的字典树为:


字典树

对于一颗字典树来说,应该具有以下性质:


性质
第二条性质中的到某个结点,就是指到红色结点。

字典树的构建

字典树的构建
现在给出了,许多的字符串,我们从第一个字符串CAI开始构建。首先构建根节点,其次构建出CAI三个结点, 字典树构建

现在构建字符串CAO因为CA已经存在,所以遍历到A,发现O结点并不存在,生成O结点。


字典树构建
以此类推,最后生成的字典树,如上图所示。这个构建过程,每一次都相当于遍历了一个字符串的长度。
假如有n个字符串,那么它的时间复杂度就是,n乘上字符串的平均长度。
字典树的构建

对于字典树,在空间上的花费为:

空间花费:平均单词长度*结点长度*单词数

字典树的查询

构建出字典树

首先我们根据给出的单词,构建出了相应的字典树。


查询

现在,我们要对inn这个单词进行查询,当然是从根节点先开始。


查询
按照结点进行查询,最后可以找到inn这个字符串。那么它的时间复杂度就是这个字符串的长度O(len)。

字典树的插入

插入

现在我们要插入新的字符串atm,那应该怎么做呢?


插入

在走到t结点时,发现没有m结点,所以构造出m结点,并变为红色。

字典树的删除

删除

现在我们要删除字典树中的ant字符串,当然是从根节点开始去做一个查询。


删除

最后找到,结点t并且n结点也并没有其他分支,所以在删除时,会将n->t全部删除。


删除
最后结果如图所示,时间复杂度也为O(len)。

字典树的应用

字典树的应用

相关文章

  • 算法导论:字典树

    算法导论:字典树 如果我们给定字符串集合为{b abc abd bcd abcd efg ...

  • HashMap1.8 源码解析(3)--TreeNode(红黑树

    完整代码:代码 前言 在写这篇文章之前,我针对红黑树参考算法导论写了一篇文章图解红黑树-算法导论-java实现基于...

  • 《算法导论》-- B树

    1 概述 B树是为磁盘或其它直接存取的辅助存储设备而设计的一种平衡搜索树。B树类似于红黑树,但它在降低磁盘I/O操...

  • 算法导论:后缀树

    算法导论:后缀树 参考资料:在线构造后缀树Ukkonen's Algorithm构造后缀树实录后缀树系列在阅读本文...

  • 网易微专业-机器学习工程师 百度网盘分享

    课程大纲: 导论 机器学习介绍与算法一览 算法与案例:线性回归与逻辑回归 算法与案例:树模型 算法与案例:支持向量...

  • 数据结构之字典树Trie

    字典树Trie 字典树也叫前缀树,是一种在字符串查找,前缀匹配等问题广泛应用的算法,为什么使用字典树呢?我们都知道...

  • 红黑树

    首先说明一点,这里实现的红黑树,和《算法》(第四版)里面的算法是一样的,不是按照《算法导论》里面的红黑树算法写的。...

  • 数据结构与算法(十四)深入理解红黑树和JDK TreeMap和T

    本文主要包括以下内容: 什么是2-3树 2-3树的插入操作 红黑树与2-3树的等价关系 《算法4》和《算法导论》上...

  • 实现字典树

    题目:实现字典树 (算法课第七课) Trie树,又称为字典树、单词查找树或者前缀树,是一种用于快速检索的多叉数结构...

  • 字典树

    功能 字典树是用数组存储大量字符串的一种算法 字典树算法开辟空间非常大,但是对于字符串插入和查询有很快的速度 用法...

网友评论

      本文标题:算法导论:字典树

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