zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    重启机器导致mysql启动失败
    setTimeout 的方式实现 setInteval
    4.1 k8s-pod的基本操作
    Git
    leetcode -1
    面试-总结
    网络基础
    问题总结
    Notepad++安装
    Django 使用Form组件完成登录注册
  • 原文地址:https://www.cnblogs.com/hnoi/p/11361040.html
Copyright © 2011-2022 走看看