• 字典树


    字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

    ----摘自必应

    其建立过程类似链表的生成,顾名思义,每次我们查询、插入一个单词,都从单词首字母开始,查看本节点内是否存在指向下一字母的指针,依次向后查找字典树。在结构体里还可以存放其他变量,使得查找到单词时可以输出和单词对应的数据。

    插入、查找过程见代码详解。

    注意:G++提交字典树题目容易MLE,请用C++提交。

    模板

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 struct Node
     5 {
     6     Node *ap[26];//保存指向下一节点的指针
     7     //---
     8     //存放每个单词的一些属性,数据类型根据需求自定,或者使用结构体保存
     9     int num;//保存出现次数
    10     //---
    11     void ini()//生成新节点时调用对其初始化
    12     {
    13         num=0;
    14         for(int i=0;i<26;i++)
    15             ap[i]=NULL;
    16     }
    17 }*head;//申明头指针用于指向字典树
    18 void Insert(string str)
    19 {
    20     Node *now=head,*makeNode;//now指针用于指向当前位置,makeNode用于生成新节点,再让now->ap[odx]指向新生成的节点
    21     for(int i=0;i<str.length();i++)
    22     {
    23         int odx=str[i]-'a';
    24         if(now->ap[odx]==NULL)//如果为空说明字典树没有后续的内容,就建立新节点
    25         {
    26             makeNode=new Node;
    27             makeNode->ini();
    28             now->ap[odx]=makeNode;
    29         }
    30         now=now->ap[odx];//迭代now指针,使其转移到下一位置
    31     }
    32     now->num++;
    33 }
    34 bool Find(string str)//返回值根据要求而定
    35 {
    36     int counter=0;
    37     Node *now=head;
    38     for(int i=0;i<str.length();i++)//迭代过程类似插入
    39     {
    40         int odx=str[i]-'a';
    41         counter=now->num;
    42         if(now->ap[odx]==NULL)
    43             return false;
    44         now=now->ap[odx];
    45     }
    46     return true;
    47 }
    48 void del(Node *root)
    49 {
    50     if(root==NULL)
    51         return;
    52     for(int i=0;i<26;i++)
    53         del(root->ap[i]);
    54     delete root;
    55 }
  • 相关阅读:
    python反爬之js混淆-字符串映射
    How to Provide a Default Trace for a Cloud Application
    Reset Peak Used Memory
    SAP 课程
    note 1639578 and 1622837
    SAP License error
    SAP BASIS-System Move
    初识Agile(敏捷项目管理)
    SAP HANA升级
    SAP FIORI 部署
  • 原文地址:https://www.cnblogs.com/LukeStepByStep/p/5779036.html
Copyright © 2020-2023  润新知