zoukankan      html  css  js  c++  java
  • Trie树

    特性

    Trie树属于树形结构,又称字典树、前缀树。查询效率比红黑树和哈希表都要快。假设有这么一种应用场景:有若干个英文单词,需要快速查找某个单词是否存在于字典中。使 用Trie时先从根节点开始查找,直至匹配到给出字符串的最后一个节点。在建立字典树结构时,预先把带有相同前缀的单词合并在同一节点,直至两个单词的某 一个字母不同,则再从发生差异的节点中分叉一个子节点。适合这种以公共前缀进行查询的场合

    节点结构:
    每个节点对应一个最大可储存字符数组。假设字典只存26个小写英文字母,那么每个节点下应该有一个长度为26的数组。换言说,可存的元素类型越多,单个节 点占用内存越大。如果用字典树储存汉字,那么每个节点必须为数千个常用汉字开辟一个数组作为储存空间,占用的内存实在不是一个数量级。不过Trie树就是 一种用空间换时间的数据结构,鱼和熊掌往往不可兼得。

    建树细节:

    • 取要插入字符串的首个字符,从根节点的孩子节点开始,匹配当前字符是否已有节点,有则把指针指向该节点。无则为该字符创建节点,并把指针指向该新建节点。
    • 迭代。
    • 遇到要插入字符串末尾结束符时停止迭代,并把最后一个非’’字符对应的节点设为末端节点。

    查找细节:
    循环取要插入字符串的首个字符,从根节点的孩子节点开始,匹配当前字符是否已有节点,有则继续循环,无则返回False. 直至匹配到最后一个字符则完成查找。

    树结构图:
    我们用apps, apply, apple, append, back, basic, backen几英文单词创建树形结构:

  • 相关阅读:
    Python Scrapy 自动爬虫注意细节(3)
    Python Scrapy 验证码登录处理
    Python Scrapy 自动爬虫注意细节(2)
    Python Scrapy 自动爬虫注意细节(1)
    Python 爬虫知识点
    Android权限全记录(转)
    Python 爬虫知识点
    eclipse的Maven项目pom.xml错误信息提示missingxxxjar解决方案
    Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
    spark学习系列
  • 原文地址:https://www.cnblogs.com/yyxayz/p/4065192.html
Copyright © 2011-2022 走看看