跳转至

字典树

Trie树,即字典树,又称前缀树,是一种树形结构,典型应用是用于统计和排序大量的字符串(但不限于字符串),所以经常被搜索引擎用于文本词频统计。它的优先是,最大限度的减少无谓的字符串比较,提高查找效率。

举例:路由器中有很多很多的IP地址,我想知道某个网段下IP地址的数量。恰好网段的定义和IP地址的前缀相对应。使用前缀树是一个很好的做法。

假设需要统计所有 /24 网段的 IP 数量(即前 24 位相同的 IP 属于同一子网),有IP地址127.0.0.1, 127.0.0.2, 127.0.1.1,可以绘制Trie:

graph TD
    root("根节点") --> A("127=3")
    A --> B("127.0=3")
    B --> C("127.0.0=2")
    B --> D("127.0.1=1")
    C --> E("127.0.0.1=1")
    C --> F("127.0.0.2=1")
    D --> G("127.0.1.1=1")

    C:::subnetNode
    D:::subnetNode
    E:::ipNode
    F:::ipNode
    G:::ipNode

    classDef subnetNode fill:#f9f,stroke:#333,stroke-width:2px
    classDef ipNode fill:#bbf,stroke:#333,stroke-width:1px