• Trie 字典树


    Trie

    Trie(字典树)是一种用于实现字符串快速检索的多叉树结构。Tire的每个节点都有若干个字符指针,若再插入和检索字符串时扫描到一个字符,就沿字符走向指向的节点。

     

    插入

    当需要插入一个字符串时,我们从根走起,依次扫描每一个字符:

    1. 若字符指向一个已经存在的节点,则顺着节点继续走下去
    2. 若字符指向空,则新建一个节点,继续走下去。

    当字符串中的字符都检索完毕时,记录下其终点结点。

    检索

    当需要检索一个字符串是否存在时,我们从根走起,一次扫描每一个字符:

    1. 若字符指向空,则说明不存在,结束。
    2. 若字符指向一个结点,则继续走下去。

     

    当字符串中所有字符被检索完毕时,若当前结点是一个被标记为终点的节点,说明字符串存在,否则说明其不存在。

     1 int trie[SIZE][26], tot = 1;
     2 void insert(char* str){
     3     int len = strlen(str), p = 1;
     4     for (int k = 0; k < len; k++){
     5         int ch = str[k] - 'a';
     6         if (trie[p][ch] == 0) trie[p][ch] = ++tot;
     7         p = trie[p][ch];
     8     }
     9     end[p] = true;
    10 }
    11 bool search(char* str){
    12     int len = strlen(str), p = 1;
    13     for (int k = 0; k <= len; k++){
    14         p = trie[p][str[k] - 'a'];
    15         if (p == 0) return false;
    16     }
    17     return end[p];
    18 }
  • 相关阅读:
    定时器
    按键中断部分的理解
    初中数学
    WING IDE 快捷键
    机器学习各种网址
    SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
    Python编码格式导致的csv读取错误
    Oracle中的rownum 和rowid的用法和区别
    oracle配置
    matplotlib命令与格式:标题(title),标注(annotate),文字说明(text)
  • 原文地址:https://www.cnblogs.com/hnoi/p/11361040.html
Copyright © 2020-2023  润新知