trie树这个数据结构的优点是啥,中文名称是啥 提高点难度:他的缺点是啥,效率用big O表示是多高( 二 )



程序员不要当一条咸鱼,要向 cook 靠拢:) Trie树的删除操作 Trie树的删除操作与二叉树的删除操作有类似的地方,需要考虑删除的节点所处的位置,这里分三种情况进行分析: 删除整个单词(比如hi)
trie树这个数据结构的优点是啥,中文名称是啥 提高点难度:他的缺点是啥,效率用big O表示是多高


从根节点开始查找第一个字符h找到h子节点后,继续查找h的下一个子节点ii是单词hi的标志位,将该标志位去掉i节点是hi的叶子节点,将其删除删除后发现h节点为叶子节点,并且不是单词标志位,也将其删除这样就完成了hi单词的删除操作删除前缀单词(比如cod)
trie树这个数据结构的优点是啥,中文名称是啥 提高点难度:他的缺点是啥,效率用big O表示是多高

这种方式删除比较简单。 只需要将cod单词整个字符串查找完后,d节点因为不是叶子节点,只需将其单词标志去掉即可。 删除分支单词(比如cook)
trie树这个数据结构的优点是啥,中文名称是啥 提高点难度:他的缺点是啥,效率用big O表示是多高

与 删除整个单词 情况类似,区别点在于删除到 cook 的第一个 o 时,该节点为非叶子节点,停止删除,这样就完成cook字符串的删除操作。 Trie树的应用 事实上 Trie树 在日常生活中的使用随处可见,比如这个: 具体来说就是经常用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 1. 前缀匹配 例如:找出一个字符串集合中所有以 五分钟 开头的字符串。我们只需要用所有字符串构造一个 trie树,然后输出以 五?\u0026gt;分?\u0026gt;钟 开头的路径上的关键字即可。 trie树前缀匹配常用于搜索提示。如当输入一个网址,可以自动搜索出可能的选择。当没有完全匹配的搜索结果,可以返回前缀最相似的可能
trie树这个数据结构的优点是啥,中文名称是啥 提高点难度:他的缺点是啥,效率用big O表示是多高

2. 字符串检索 给出 N 个单词组成的熟词表,以及一篇全用小写英文书写的文章,按最早出现的顺序写出所有不在熟词表中的生词。 检索/查询功能是Trie树最原始的功能。给定一组字符串,查找某个字符串是否出现过,思路就是从根节点开始一个一个字符进行比较:
如果沿路比较,发现不同的字符,则表示该字符串在集合中不存在。如果所有的字符全部比较完并且全部相同,还需判断最后一个节点的标志位(标记该节点是否代表一个关键字)。Trie树的局限性 如前文所讲,Trie的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。 假设字符的种数有m个,有若干个长度为n的字符串构成了一个 Trie树 ,则每个节点的出度为 m(即每个节点的可能子节点数量为m),Trie树 的高度为n。很明显我们浪费了大量的空间来存储字符,此时Trie树的最坏空间复杂度为O(m^n)。也正由于每个节点的出度为m,所以我们能够沿着树的一个个分支高效的向下逐个字符的查询,而不是遍历所有的字符串来查询,此时Trie树的最坏时间复杂度为O(n)。 这正是空间换时间的体现,也是利用公共前缀降低查询时间开销的体现。
我的专栏:和程序员小吴一起学算法
?? 看完三件事:如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个忙:
点赞,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)关注我和专栏,让我们成为长期关系关注公众号「五分钟学算法」,第一时间阅读最新的算法文章,公众号后台回复 1024 送你 50 本 算法编程书籍。trie树这个数据结构的优点是啥,中文名称是啥 提高点难度:他的缺点是啥,效率用big O表示是多高


推荐阅读